diff options
Diffstat (limited to 'opcodes/avr-dis.c')
-rw-r--r-- | opcodes/avr-dis.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/opcodes/avr-dis.c b/opcodes/avr-dis.c index 3b783fb..748cb2d 100644 --- a/opcodes/avr-dis.c +++ b/opcodes/avr-dis.c @@ -184,17 +184,23 @@ avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constra break; case 'i': - sprintf (buf, "0x%04X", insn2); + { + unsigned int val = insn2 | 0x800000; + *sym = 1; + *sym_addr = val; + sprintf (buf, "0x%04X", insn2); + strcpy (comment, comment_start); + } break; case 'j': { unsigned int val = ((insn & 0xf) | ((insn & 0x600) >> 5) | ((insn & 0x100) >> 2)); - if (val > 0 && !(insn & 0x100)) - val |= 0x80; + *sym = 1; + *sym_addr = val | 0x800000; sprintf (buf, "0x%02x", val); - sprintf (buf, "%d", val); + strcpy (comment, comment_start); } break; |