diff options
author | Mike Pavone <pavone@retrodev.com> | 2013-01-05 01:31:28 -0800 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2013-01-05 01:31:28 -0800 |
commit | 85e019659da303cc4f5f8235335a0861115e8936 (patch) | |
tree | 30ba51d00d261be53edebc47828a1e3fc1cb2688 /m68k_to_x86.c | |
parent | aa7e687734703551bade9688baa81edf2df94efe (diff) |
FIx movem when src is reg list and dst is not a areg predec mode
Diffstat (limited to 'm68k_to_x86.c')
-rw-r--r-- | m68k_to_x86.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/m68k_to_x86.c b/m68k_to_x86.c index 2ae0dc5..a1dffd7 100644 --- a/m68k_to_x86.c +++ b/m68k_to_x86.c @@ -983,6 +983,7 @@ uint8_t * translate_m68k_movem(uint8_t * dst, m68kinst * inst, x86_68k_options * dir = -1; } else { reg = 0; + dir = 1; } switch (inst->dst.addr_mode) { @@ -3111,6 +3112,11 @@ uint8_t * translate_m68k_stream(uint32_t address, m68k_context * context) dst = opts->cur_code; dst_end = opts->code_end; } + if (address >= 0x400000 && address < 0xE00000) { + dst = xor_rr(dst, RDI, RDI, SZ_D); + dst = call(dst, (uint8_t *)exit); + break; + } next = m68k_decode(encoded, &instbuf, address); address += (next-encoded)*2; encoded = next; |