changeset 225:7348057e7a8c

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.
author Mike Pavone <pavone@retrodev.com>
date Sun, 21 Apr 2013 11:42:45 -0700
parents f7ff02eeec2f
children 28a6697e847b
files m68k_to_x86.c
diffstat 1 files changed, 2 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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);