Mercurial > repos > blastem
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; |