From de1b531df3b35e15dd784451a477c93614cd9d52 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 19 Mar 1998 23:51:18 +0000 Subject: [PATCH] Patches for PR15356 courtesy of Tony Thompson at ARM. --- opcodes/ChangeLog | 11 +++++++++++ opcodes/arm-opc.h | 6 +++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 319d8b2af8..dd887ed5f4 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,14 @@ +Thu Mar 19 15:46:53 1998 Nick Clifton + + These patches are courtesy of Jonathan Walton and Tony Thompson + (athompso@cambridge.arm.com). + + * arm-dis.c (print_insn_thumb): Ignore bottom two bits of PC + relative addresses. + + * arm-opc.h (thumb_opcodes): Annotate PC relative addresses with + both the offset and the label closest to the destination. + start-sanitize-r5900 Thu Mar 19 13:53:25 1998 Jeffrey A Law (law@cygnus.com) diff --git a/opcodes/arm-opc.h b/opcodes/arm-opc.h index 89623a35dd..43991377b6 100644 --- a/opcodes/arm-opc.h +++ b/opcodes/arm-opc.h @@ -66,7 +66,7 @@ Thumb specific format options: %B print Thumb branch destination (signed displacement) %W print (bitfield * 4) as a decimal %H print (bitfield * 2) as a decimal - %a print (bitfield * 4) as a decoded symbol + %a print (bitfield * 4) as a pc-rel offset + decoded symbol */ /* Note: There is a partial ordering in this table - it must be searched from @@ -223,7 +223,7 @@ static struct thumb_opcode thumb_opcodes[] = {0x3000, 0xF800, "add\t%8-10r, #%0-7d"}, {0x3800, 0xF800, "sub\t%8-10r, #%0-7d"}, /* format 6 */ - {0x4800, 0xF800, "ldr\t%8-10r, %0-7a"}, + {0x4800, 0xF800, "ldr\t%8-10r, [pc, #%0-7W]\t(%0-7a)"}, /* TODO: Disassemble PC relative "LDR rD,=" */ /* format 9 */ {0x6000, 0xF800, "str\t%0-2r, [%3-5r, #%6-10W]"}, {0x6800, 0xF800, "ldr\t%0-2r, [%3-5r, #%6-10W]"}, @@ -236,7 +236,7 @@ static struct thumb_opcode thumb_opcodes[] = {0x9000, 0xF800, "str\t%8-10r, [sp, #%0-7W]"}, {0x9800, 0xF800, "ldr\t%8-10r, [sp, #%0-7W]"}, /* format 12 */ - {0xA000, 0xF800, "add\t%8-10r, pc, #%0-7W"}, /* TODO: Disassemble PC relative "LDR rD,=" */ + {0xA000, 0xF800, "add\t%8-10r, pc, #%0-7W\t(adr %8-10r,%0-7a)"}, {0xA800, 0xF800, "add\t%8-10r, sp, #%0-7W"}, /* format 15 */ {0xC000, 0xF800, "stmia\t%8-10r!,%M"},