diff options
author | Nick Clifton <nickc@redhat.com> | 2000-11-25 00:21:40 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2000-11-25 00:21:40 +0000 |
commit | 077b8428ab2abe6e4c66216151c518c03467323c (patch) | |
tree | 4d9e07f38a2e3b8ad7561574fdf3241d484b910d /opcodes/arm-dis.c | |
parent | 49425d281cfc2c9d4b61bc7db78f398950e9dca9 (diff) | |
download | gdb-077b8428ab2abe6e4c66216151c518c03467323c.zip gdb-077b8428ab2abe6e4c66216151c518c03467323c.tar.gz gdb-077b8428ab2abe6e4c66216151c518c03467323c.tar.bz2 |
Add ARM v5t, v5te and XScale support
Diffstat (limited to 'opcodes/arm-dis.c')
-rw-r--r-- | opcodes/arm-dis.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index 0ddcffa..262406b 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -421,6 +421,29 @@ print_insn_arm (pc, info, given) } break; + case 'B': + /* Print ARM V5 BLX(1) address: pc+25 bits. */ + { + bfd_vma address; + bfd_vma offset = 0; + + if (given & 0x00800000) + /* Is signed, hi bits should be ones. */ + offset = (-1) ^ 0x00ffffff; + + /* Offset is (SignExtend(offset field)<<2). */ + offset += given & 0x00ffffff; + offset <<= 2; + address = offset + pc + 8; + + if (given & 0x01000000) + /* H bit allows addressing to 2-byte boundaries. */ + address += 2; + + info->print_address_func (address, info); + } + break; + case 'C': func (stream, "_"); if (given & 0x80000) @@ -648,6 +671,9 @@ print_insn_thumb (pc, info, given) info->bytes_per_chunk = 4; info->bytes_per_line = 4; + if ((given & 0x10000000) == 0) + func (stream, "blx\t"); + else func (stream, "bl\t"); info->print_address_func (BDISP23 (given) * 2 + pc + 4, info); |