diff options
Diffstat (limited to 'opcodes/msp430-dis.c')
-rw-r--r-- | opcodes/msp430-dis.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/opcodes/msp430-dis.c b/opcodes/msp430-dis.c index d7e8d8a..676a2d8 100644 --- a/opcodes/msp430-dis.c +++ b/opcodes/msp430-dis.c @@ -1102,7 +1102,7 @@ print_insn_msp430 (bfd_vma addr, disassemble_info *info) } else if (extension_word) { - if (extension_word & (1 << 6)) + if (extension_word & BYTE_OPERATION) bc = ".w"; else { @@ -1181,7 +1181,12 @@ print_insn_msp430 (bfd_vma addr, disassemble_info *info) prin (stream, "rpt #%d { ", (extension_word & 0xf) + 1); } - if (extension_word && opcode->name[strlen (opcode->name) - 1] != 'x') + /* Special case: RRC with an extension word and the ZC bit set is actually RRU. */ + if (extension_word + && (extension_word & IGNORE_CARRY_BIT) + && strcmp (opcode->name, "rrc") == 0) + (*prin) (stream, "rrux%s", bc); + else if (extension_word && opcode->name[strlen (opcode->name) - 1] != 'x') (*prin) (stream, "%sx%s", opcode->name, bc); else (*prin) (stream, "%s%s", opcode->name, bc); |