From 82f2b58494147dfb80d0a6fc5cbe6d3034394cad Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Wed, 19 Jun 2013 00:40:13 -0700 Subject: Fix movem with pc displacement or pc indexed source --- 68kinst.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to '68kinst.c') diff --git a/68kinst.c b/68kinst.c index 8417c13..4f469b8 100644 --- a/68kinst.c +++ b/68kinst.c @@ -501,6 +501,10 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address) decoded->op = M68K_INVALID; return start+1; } + if (decoded->src.addr_mode == MODE_PC_DISPLACE || decoded->src.addr_mode == MODE_PC_INDEX_DISP8) { + //adjust displacement to account for extra instruction word + decoded->src.params.regs.displacement += 2; + } } else { decoded->src.addr_mode = MODE_REG; decoded->src.params.immed = *(++istream); -- cgit v1.2.3