target-m68k: fix muluw/mulsw
authorLaurent Vivier <laurent@vivier.eu>
Thu, 24 Nov 2016 08:31:32 +0000 (09:31 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Thu, 24 Nov 2016 15:24:27 +0000 (16:24 +0100)
"The multiplier and multiplicand are both word operands, and the result
is a long-word operand."

So compute flags on a long-word result, not on a word result.

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <rth@twiddle.net>
target-m68k/translate.c

index d2d68163b35f1858103adaf4ac0562cf5b414286..d6ed883882b1878d19481c39aa7b066fc3f8c562 100644 (file)
@@ -1186,7 +1186,7 @@ DISAS_INSN(mulw)
     SRC_EA(env, src, OS_WORD, sign, NULL);
     tcg_gen_mul_i32(tmp, tmp, src);
     tcg_gen_mov_i32(reg, tmp);
-    gen_logic_cc(s, tmp, OS_WORD);
+    gen_logic_cc(s, tmp, OS_LONG);
 }
 
 DISAS_INSN(divw)