# HG changeset patch # User Mike Pavone # Date 1366569765 25200 # Node ID 7348057e7a8cddebb251a2cb47e0fe3be8705add # Parent f7ff02eeec2f53038013856073b06386ad3f53da Fixed a couple bugs in roxl/roxr. X flag wasn't being saved properly and rotates of more than 31 bits were messed up as the X flag was being thrown away between the first 31 bits of rotate and the rest. diff -r f7ff02eeec2f -r 7348057e7a8c m68k_to_x86.c --- a/m68k_to_x86.c Sun Apr 21 11:40:18 2013 -0700 +++ b/m68k_to_x86.c Sun Apr 21 11:42:45 2013 -0700 @@ -3628,6 +3628,7 @@ dst = rcr_irdisp8(dst, 1, dst_op.base, dst_op.disp, inst->extra.size); } } + dst = setcc_rind(dst, CC_C, CONTEXT); dst = sub_ir(dst, 32, SCRATCH1, SZ_B); *norm_off = dst - (norm_off+1); dst = bt_irdisp8(dst, 0, CONTEXT, 0, SZ_B); @@ -3645,7 +3646,7 @@ } } dst = setcc_r(dst, CC_C, FLAG_C); - dst = mov_rr(dst, FLAG_C, CONTEXT, SZ_B); + dst = mov_rrind(dst, FLAG_C, CONTEXT, SZ_B); end_off = dst + 1; dst = jmp(dst, dst+2); *zero_off = dst - (zero_off+1);