"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 <laur...@vivier.eu> --- target-m68k/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target-m68k/translate.c b/target-m68k/translate.c index d2d6816..d6ed883 100644 --- a/target-m68k/translate.c +++ b/target-m68k/translate.c @@ -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) -- 2.7.4