aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Enberg <penberg@kernel.org>2012-02-02 19:02:20 +0200
committerPekka Enberg <penberg@kernel.org>2012-02-02 19:02:20 +0200
commit48fad6d8f76a4456aeea5415c9f422a5c75f7583 (patch)
tree2ba3a264d6753fa55db0e00c5d9c6c7debd32623
parentfc8aba2bef7917b9deffa1918b2a7b8740dbdecf (diff)
parentbcb42c3e504a58e1c7e3f8e8a61f6cc1f19569b0 (diff)
downloadjato-48fad6d8f76a4456aeea5415c9f422a5c75f7583.tar.gz
Merge /home/penberg/src/jato
-rw-r--r--arch/x86/emit_32.c1
-rw-r--r--arch/x86/emit_64.c1
-rw-r--r--arch/x86/encode.c1
-rw-r--r--arch/x86/include/arch/instruction.h1
-rw-r--r--arch/x86/instruction.c1
-rw-r--r--arch/x86/lir-printer.c6
-rw-r--r--boehmgc/Makefile7
-rw-r--r--test/integration/bytecode-test.c5
8 files changed, 20 insertions, 3 deletions
diff --git a/arch/x86/emit_32.c b/arch/x86/emit_32.c
index f133bdac..b308a0ec 100644
--- a/arch/x86/emit_32.c
+++ b/arch/x86/emit_32.c
@@ -1254,6 +1254,7 @@ static emit_fn_t emitters[] = {
DECL_EMITTER(INSN_MULSD_XMM_XMM, insn_encode),
DECL_EMITTER(INSN_MULSS_XMM_XMM, insn_encode),
DECL_EMITTER(INSN_NEG_REG, insn_encode),
+ DECL_EMITTER(INSN_NOP, insn_encode),
DECL_EMITTER(INSN_OR_REG_REG, insn_encode),
DECL_EMITTER(INSN_POP_MEMLOCAL, insn_encode),
DECL_EMITTER(INSN_POP_REG, insn_encode),
diff --git a/arch/x86/emit_64.c b/arch/x86/emit_64.c
index 081ab8df..8ffbc21f 100644
--- a/arch/x86/emit_64.c
+++ b/arch/x86/emit_64.c
@@ -1674,6 +1674,7 @@ static emit_fn_t emitters[] = {
DECL_EMITTER(INSN_MULSD_XMM_XMM, insn_encode),
DECL_EMITTER(INSN_MULSS_XMM_XMM, insn_encode),
DECL_EMITTER(INSN_NEG_REG, insn_encode),
+ DECL_EMITTER(INSN_NOP, insn_encode),
DECL_EMITTER(INSN_OR_REG_REG, insn_encode),
DECL_EMITTER(INSN_POP_MEMLOCAL, insn_encode),
DECL_EMITTER(INSN_POP_REG, insn_encode),
diff --git a/arch/x86/encode.c b/arch/x86/encode.c
index 08725417..ff6a4117 100644
--- a/arch/x86/encode.c
+++ b/arch/x86/encode.c
@@ -254,6 +254,7 @@ static uint64_t encode_table[NR_INSN_TYPES] = {
[INSN_MULSD_XMM_XMM] = REPNE_PREFIX | ESCAPE_OPC_BYTE | OPCODE(0x59) | ADDMODE_REG_REG | WIDTH_64,
[INSN_MULSS_XMM_XMM] = REPE_PREFIX | ESCAPE_OPC_BYTE | OPCODE(0x59) | ADDMODE_REG_REG | WIDTH_FULL,
[INSN_NEG_REG] = OPCODE(0xf7) | OPCODE_EXT(3) | ADDMODE_REG | DIR_REVERSED | WIDTH_FULL | REX_W_PREFIX,
+ [INSN_NOP] = OPCODE(0x90) | ADDMODE_IMPLIED,
[INSN_OR_MEMBASE_REG] = OPCODE(0x0b) | ADDMODE_RM_REG | WIDTH_FULL | REX_W_PREFIX,
[INSN_OR_REG_REG] = OPCODE(0x09) | ADDMODE_REG_REG | DIR_REVERSED | WIDTH_FULL | REX_W_PREFIX,
[INSN_PHI] = INVALID_INSN,
diff --git a/arch/x86/include/arch/instruction.h b/arch/x86/include/arch/instruction.h
index 6b1dc236..4dd16fb1 100644
--- a/arch/x86/include/arch/instruction.h
+++ b/arch/x86/include/arch/instruction.h
@@ -185,6 +185,7 @@ enum insn_type {
INSN_MUL_REG_EAX,
INSN_MUL_REG_REG,
INSN_NEG_REG,
+ INSN_NOP,
INSN_OR_IMM_MEMBASE,
INSN_OR_MEMBASE_REG,
INSN_OR_REG_REG,
diff --git a/arch/x86/instruction.c b/arch/x86/instruction.c
index bd8eacf7..27aa8cb0 100644
--- a/arch/x86/instruction.c
+++ b/arch/x86/instruction.c
@@ -887,6 +887,7 @@ static unsigned long insn_flags[] = {
[INSN_MUL_REG_EAX] = USE_SRC | USE_DST | DEF_DST | DEF_xDX | DEF_xAX,
[INSN_MUL_REG_REG] = USE_SRC | USE_DST | DEF_DST,
[INSN_NEG_REG] = USE_DST | DEF_DST,
+ [INSN_NOP] = USE_NONE | DEF_NONE,
[INSN_OR_IMM_MEMBASE] = USE_DST | DEF_NONE,
[INSN_OR_MEMBASE_REG] = USE_SRC | USE_DST | DEF_DST,
[INSN_OR_REG_REG] = USE_SRC | USE_DST | DEF_DST,
diff --git a/arch/x86/lir-printer.c b/arch/x86/lir-printer.c
index a6054098..2684e8db 100644
--- a/arch/x86/lir-printer.c
+++ b/arch/x86/lir-printer.c
@@ -821,6 +821,11 @@ static int print_neg_reg(struct string *str, struct insn *insn)
return print_reg(str, &insn->dest);
}
+static int print_nop(struct string *str, struct insn *insn)
+{
+ return print_func_name(str);
+}
+
static int print_or_imm_membase(struct string *str, struct insn *insn)
{
print_func_name(str);
@@ -1072,6 +1077,7 @@ static print_insn_fn insn_printers[] = {
[INSN_MUL_REG_EAX] = print_mul_reg_eax,
[INSN_MUL_REG_REG] = print_mul_reg_reg,
[INSN_NEG_REG] = print_neg_reg,
+ [INSN_NOP] = print_nop,
[INSN_OR_IMM_MEMBASE] = print_or_imm_membase,
[INSN_OR_MEMBASE_REG] = print_or_membase_reg,
[INSN_OR_REG_REG] = print_or_reg_reg,
diff --git a/boehmgc/Makefile b/boehmgc/Makefile
index ce32a89f..59c77481 100644
--- a/boehmgc/Makefile
+++ b/boehmgc/Makefile
@@ -27,6 +27,13 @@ ifeq ($(uname_S),Darwin)
endif
endif
+#
+# Use -marm for arm*
+#
+ifneq ($(findstring arm,$(uname_M)),)
+ DEFAULT_CFLAGS += -marm
+endif
+
BOEHMGC_OBJS += allchblk.o
BOEHMGC_OBJS += alloc.o
BOEHMGC_OBJS += blacklst.o
diff --git a/test/integration/bytecode-test.c b/test/integration/bytecode-test.c
index b7eb9f81..7911ab41 100644
--- a/test/integration/bytecode-test.c
+++ b/test/integration/bytecode-test.c
@@ -999,6 +999,7 @@ static void test_lstore_3(void)
assert_long_equals(1, jlong_run(bytecode));
}
+#ifndef CONFIG_ARM
static void test_fstore_0(void)
{
uint8_t bytecode[] = { OPC_FCONST_1, OPC_FSTORE_0, OPC_FLOAD_0, OPC_FRETURN};
@@ -1055,8 +1056,6 @@ static void test_dstore_3(void)
assert_double_equals(1, jdouble_run(bytecode));
}
-#ifndef CONFIG_ARM
-
static void test_i2f(void)
{
uint8_t bytecode[] = { OPC_ICONST_1, OPC_I2F, OPC_FRETURN };
@@ -1236,6 +1235,7 @@ static void run_tests(void)
test_lstore_1();
test_lstore_2();
test_lstore_3();
+#ifndef CONFIG_ARM
test_fstore_0();
test_fstore_1();
test_fstore_2();
@@ -1244,7 +1244,6 @@ static void run_tests(void)
test_dstore_1();
test_dstore_2();
test_dstore_3();
-#ifndef CONFIG_ARM
/* test_astore_0(); */
/* test_astore_1(); */
/* test_astore_2(); */