# HG changeset patch # User Mike Pavone # Date 1374045508 25200 # Node ID 1a48b31f53169948c4cc4d1c02c110c7af79eeb8 # Parent 112d5d0830fd655cd887812cf2f76e69472cf1ce Fix carry flag on rotate when the register provided rotate bit count is exactly 32 diff -r 112d5d0830fd -r 1a48b31f5316 m68k_to_x86.c --- a/m68k_to_x86.c Wed Jul 17 00:17:42 2013 -0700 +++ b/m68k_to_x86.c Wed Jul 17 00:18:28 2013 -0700 @@ -3557,6 +3557,7 @@ dst = cmp_ir(dst, 32, SCRATCH1, SZ_B); norm_off = dst+1; dst = jcc(dst, CC_L, dst+2); + dst = sub_ir(dst, 32, SCRATCH1, SZ_B); if (dst_op.mode == MODE_REG_DIRECT) { if (inst->op == M68K_ROL) { dst = rol_ir(dst, 31, dst_op.base, inst->extra.size); @@ -3574,7 +3575,6 @@ dst = ror_irdisp8(dst, 1, dst_op.base, dst_op.disp, inst->extra.size); } } - dst = sub_ir(dst, 32, SCRATCH1, SZ_B); *norm_off = dst - (norm_off+1); if (dst_op.mode == MODE_REG_DIRECT) { if (inst->op == M68K_ROL) {