comparison m68k_to_x86.c @ 59:32650c77008a

ecx was getting clobbered before the relevant temp value was used in some cases during memory reads
author Mike Pavone <pavone@retrodev.com>
date Tue, 18 Dec 2012 22:56:04 -0800
parents 3b79cbcf6846
children 918468c623e9
comparison
equal deleted inserted replaced
58:a6a19c45d358 59:32650c77008a
157 out = cycles(out, BUS*2); 157 out = cycles(out, BUS*2);
158 } else { 158 } else {
159 out = cycles(out, BUS); 159 out = cycles(out, BUS);
160 } 160 }
161 out = mov_ir(out, inst->src.params.immed, SCRATCH1, SZ_D); 161 out = mov_ir(out, inst->src.params.immed, SCRATCH1, SZ_D);
162 out = check_cycles(out);
163 switch (inst->extra.size) 162 switch (inst->extra.size)
164 { 163 {
165 case OPSIZE_BYTE: 164 case OPSIZE_BYTE:
166 out = call(out, (char *)m68k_read_byte_scratch1); 165 out = call(out, (char *)m68k_read_byte_scratch1);
167 break; 166 break;
459 } 458 }
460 dst = mov_ir(dst, inst->dst.params.immed, SCRATCH2, SZ_D); 459 dst = mov_ir(dst, inst->dst.params.immed, SCRATCH2, SZ_D);
461 dst = cmp_ir(dst, 0, flags_reg, inst->extra.size); 460 dst = cmp_ir(dst, 0, flags_reg, inst->extra.size);
462 dst = setcc_r(dst, CC_Z, FLAG_Z); 461 dst = setcc_r(dst, CC_Z, FLAG_Z);
463 dst = setcc_r(dst, CC_S, FLAG_N); 462 dst = setcc_r(dst, CC_S, FLAG_N);
464 dst = check_cycles(dst);
465 switch (inst->extra.size) 463 switch (inst->extra.size)
466 { 464 {
467 case OPSIZE_BYTE: 465 case OPSIZE_BYTE:
468 dst = call(dst, (char *)m68k_write_byte); 466 dst = call(dst, (char *)m68k_write_byte);
469 break; 467 break;