target-m68k: eor can manage word and byte operands
authorLaurent Vivier <laurent@vivier.eu>
Sat, 16 Jan 2016 22:32:31 +0000 (23:32 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Fri, 28 Oct 2016 08:38:48 +0000 (10:38 +0200)
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <rth@twiddle.net>
target-m68k/translate.c

index 031f7eb..9734d05 100644 (file)
@@ -2131,16 +2131,17 @@ DISAS_INSN(cmpa)
 DISAS_INSN(eor)
 {
     TCGv src;
-    TCGv reg;
     TCGv dest;
     TCGv addr;
+    int opsize;
 
-    SRC_EA(env, src, OS_LONG, 0, &addr);
-    reg = DREG(insn, 9);
+    opsize = insn_opsize(insn);
+
+    SRC_EA(env, src, opsize, 0, &addr);
     dest = tcg_temp_new();
-    tcg_gen_xor_i32(dest, src, reg);
-    gen_logic_cc(s, dest, OS_LONG);
-    DEST_EA(env, insn, OS_LONG, dest, &addr);
+    tcg_gen_xor_i32(dest, src, DREG(insn, 9));
+    gen_logic_cc(s, dest, opsize);
+    DEST_EA(env, insn, opsize, dest, &addr);
 }
 
 static void do_exg(TCGv reg1, TCGv reg2)