summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-28 14:30:25 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-28 14:30:25 -0800
commit4a45a45e8ca12cc6cf3a7479d8206742f4cda7e0 (patch)
treecc5552d3d4f9c9101bbea474ecfb903db22ccd44
parent0ca6761b68d895b53c13d296d51e491ae2e57583 (diff)
Fix areg indexed mode for move dst
-rw-r--r--m68k_to_x86.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c
index 13c7ea7..03dae0f 100644
--- a/m68k_to_x86.c
+++ b/m68k_to_x86.c
@@ -826,14 +826,14 @@ uint8_t * translate_m68k_move(uint8_t * dst, m68kinst * inst, x86_68k_options *
break;
case MODE_AREG_INDEX_DISP8:
dst = cycles(dst, 6);//TODO: Check to make sure this is correct
- if (opts->aregs[inst->src.params.regs.pri] >= 0) {
- dst = mov_rr(dst, opts->aregs[inst->src.params.regs.pri], SCRATCH2, SZ_D);
+ if (opts->aregs[inst->dst.params.regs.pri] >= 0) {
+ dst = mov_rr(dst, opts->aregs[inst->dst.params.regs.pri], SCRATCH2, SZ_D);
} else {
- dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->src)), SCRATCH2, SZ_D);
+ dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->dst)), SCRATCH2, SZ_D);
}
- sec_reg = (inst->src.params.regs.sec >> 1) & 0x7;
- if (inst->src.params.regs.sec & 1) {
- if (inst->src.params.regs.sec & 0x10) {
+ sec_reg = (inst->dst.params.regs.sec >> 1) & 0x7;
+ if (inst->dst.params.regs.sec & 1) {
+ if (inst->dst.params.regs.sec & 0x10) {
if (opts->aregs[sec_reg] >= 0) {
dst = add_rr(dst, opts->aregs[sec_reg], SCRATCH2, SZ_D);
} else {
@@ -850,7 +850,7 @@ uint8_t * translate_m68k_move(uint8_t * dst, m68kinst * inst, x86_68k_options *
if (src.base == SCRATCH1) {
dst = push_r(dst, SCRATCH1);
}
- if (inst->src.params.regs.sec & 0x10) {
+ if (inst->dst.params.regs.sec & 0x10) {
if (opts->aregs[sec_reg] >= 0) {
dst = movsx_rr(dst, opts->aregs[sec_reg], SCRATCH1, SZ_W, SZ_D);
} else {
@@ -868,8 +868,8 @@ uint8_t * translate_m68k_move(uint8_t * dst, m68kinst * inst, x86_68k_options *
dst = pop_r(dst, SCRATCH1);
}
}
- if (inst->src.params.regs.displacement) {
- dst = add_ir(dst, inst->src.params.regs.displacement, SCRATCH2, SZ_D);
+ if (inst->dst.params.regs.displacement) {
+ dst = add_ir(dst, inst->dst.params.regs.displacement, SCRATCH2, SZ_D);
}
dst = cmp_ir(dst, 0, flags_reg, inst->extra.size);
dst = setcc_r(dst, CC_Z, FLAG_Z);