summaryrefslogtreecommitdiff
path: root/68kinst.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-06-19 00:40:13 -0700
committerMike Pavone <pavone@retrodev.com>2013-06-19 00:40:13 -0700
commit82f2b58494147dfb80d0a6fc5cbe6d3034394cad (patch)
tree0670be9142dcaa0b1993635ae2607550891d399c /68kinst.c
parentc3084260213a5ac4d46f47e915dcc4992a67286b (diff)
Fix movem with pc displacement or pc indexed source
Diffstat (limited to '68kinst.c')
-rw-r--r--68kinst.c4
1 files changed, 4 insertions, 0 deletions
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);