summaryrefslogtreecommitdiff
path: root/68kinst.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2013-01-09 21:08:37 -0800
committerMike Pavone <pavone@retrodev.com>2013-01-09 21:08:37 -0800
commit6183c3ba67d069c0ec8619248cc39ae76958ebdc (patch)
tree296d9da5d776c97c8318a82c2b90fea4b500b753 /68kinst.c
parent15d5c98f388d705e0367e160315ede6baa55c80b (diff)
Fix signed division with negative result, fix address reg destination with word-sized operand, fix cmpm decoding and code generation, fix unbalanced pop in bit instructions
Diffstat (limited to '68kinst.c')
-rw-r--r--68kinst.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/68kinst.c b/68kinst.c
index efbb2ae..a42df45 100644
--- a/68kinst.c
+++ b/68kinst.c
@@ -1006,7 +1006,8 @@ 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_AREG) {
+ decoded->extra.size = size;
+ if (decoded->dst.addr_mode == MODE_AREG) {
//CMPM
decoded->src.addr_mode = decoded->dst.addr_mode = MODE_AREG_POSTINC;
decoded->src.params.regs.pri = decoded->dst.params.regs.pri;
@@ -1014,7 +1015,6 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address)
} else {
//EOR
decoded->op = M68K_EOR;
- decoded->extra.size = size;
decoded->src.addr_mode = MODE_REG;
decoded->src.params.regs.pri = m68k_reg_quick_field(*istream);
}