changeset 442:1a48b31f5316

Fix carry flag on rotate when the register provided rotate bit count is exactly 32
author Mike Pavone <pavone@retrodev.com>
date Wed, 17 Jul 2013 00:18:28 -0700
parents 112d5d0830fd
children 9ac3828ea560
files m68k_to_x86.c
diffstat 1 files changed, 1 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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) {