From 1ef52f49b55a9e0dfc107f5c6832bf9db6c0fc2d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 1 Jul 2009 16:36:28 +0000 Subject: [PATCH] PR 10168 * config/tc-arm.c (do_t_pkhtb): Swap Rm and Rn when encoding as PKHBT. * gas/arm/thumb32.d: Fix expected disassembly of PKHTB insn. --- gas/ChangeLog | 6 ++++++ gas/config/tc-arm.c | 11 ++++++++++- gas/doc/as.texinfo | 2 +- gas/testsuite/ChangeLog | 5 +++++ gas/testsuite/gas/arm/thumb32.d | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 32bb41305b..58697d66df 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2009-07-01 Nick Clifton + + PR 10168 + * config/tc-arm.c (do_t_pkhtb): Swap Rm and Rn when encoding as + PKHBT. + 2009-07-01 Paul Brook * config/tc-arm.c (MISSING_FNSTART): Define. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 35498f20c9..99b6e41560 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -10479,7 +10479,16 @@ static void do_t_pkhtb (void) { if (!inst.operands[3].present) - inst.instruction &= ~0x00000020; + { + unsigned Rtmp; + + inst.instruction &= ~0x00000020; + + /* PR 10168. Swap the Rm and Rn registers. */ + Rtmp = inst.operands[1].reg; + inst.operands[1].reg = inst.operands[2].reg; + inst.operands[2].reg = Rtmp; + } do_t_pkhbt (); } diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo index fc6794ba63..d1240bf562 100644 --- a/gas/doc/as.texinfo +++ b/gas/doc/as.texinfo @@ -305,7 +305,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}. @emph{Target i386 options:} [@b{--32}|@b{--64}] [@b{-n}] - [@b{-march}=@var{CPU}[+@var{EXTENSION}@dots{}]] [@b{-mtune}=@var{CPU}] + [@b{-march}=@var{CPU}[+@var{EXTENSION}@dots{}]] [@b{-mtune}=@var{CPU}] @end ifset @ifset I960 diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 09149bbb6e..ccb7ecfff4 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-07-01 Nick Clifton + + PR 10168 + * gas/arm/thumb32.d: Fix expected disassembly of PKHTB insn. + 2009-07-01 Paul Brook * gas/arm/fp-save.s: Add .fnstart and .fnend directives. diff --git a/gas/testsuite/gas/arm/thumb32.d b/gas/testsuite/gas/arm/thumb32.d index e53a23dd32..04c90daa9d 100644 --- a/gas/testsuite/gas/arm/thumb32.d +++ b/gas/testsuite/gas/arm/thumb32.d @@ -687,7 +687,7 @@ Disassembly of section .text: 0[0-9a-f]+ <[^>]+> eac0 0009 pkhbt r0, r0, r9 0[0-9a-f]+ <[^>]+> eac0 5000 pkhbt r0, r0, r0, lsl #20 0[0-9a-f]+ <[^>]+> eac0 00c0 pkhbt r0, r0, r0, lsl #3 -0[0-9a-f]+ <[^>]+> eac2 0103 pkhbt r1, r2, r3 +0[0-9a-f]+ <[^>]+> eac3 0102 pkhbt r1, r3, r2 0[0-9a-f]+ <[^>]+> eac2 4163 pkhtb r1, r2, r3, asr #17 0[0-9a-f]+ <[^>]+> b401 push \{r0\} 0[0-9a-f]+ <[^>]+> bc01 pop \{r0\}