summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-26 22:13:31 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-26 22:13:31 -0800
commit4525e91982d9ecc8432f498ff009e10c63b80177 (patch)
treea1e2580a29ac3736660e0e27ede9b64ba9c39c30
parent38724ed91cf8de72f999d6adb159bd803562128e (diff)
Fix decoding of and
-rw-r--r--68kinst.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/68kinst.c b/68kinst.c
index 5f7e549..b246e3f 100644
--- a/68kinst.c
+++ b/68kinst.c
@@ -907,7 +907,7 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address)
}
} else {
decoded->op = M68K_AND;
- decoded->extra.size = (*istream >> 6);
+ decoded->extra.size = (*istream >> 6) & 0x3;
decoded->src.addr_mode = MODE_REG;
decoded->src.params.regs.pri = m68k_reg_quick_field(*istream);
istream = m68k_decode_op(istream, decoded->extra.size, &(decoded->dst));
@@ -921,7 +921,7 @@ uint16_t * m68k_decode(uint16_t * istream, m68kinst * decoded, uint32_t address)
istream = m68k_decode_op(istream, OPSIZE_WORD, &(decoded->src));
} else {
decoded->op = M68K_AND;
- decoded->extra.size = (*istream >> 6);
+ decoded->extra.size = (*istream >> 6) & 0x3;
decoded->dst.addr_mode = MODE_REG;
decoded->dst.params.regs.pri = m68k_reg_quick_field(*istream);
istream = m68k_decode_op(istream, decoded->extra.size, &(decoded->src));