]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* gas/config/tc-arm.c (do_iwmmxt_wldstbh): Don't multiply offset binutils-csl-wrs-linux-3_4_4-21
authorJoseph Myers <joseph@codesourcery.com>
Fri, 28 Apr 2006 19:10:41 +0000 (19:10 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 28 Apr 2006 19:10:41 +0000 (19:10 +0000)
by 4 here.
(md_apply_fix3): Multiply offset by 4 here for
BFD_RELOC_ARM_CP_OFF_IMM_S2.
* gas/testsuite/gas/arm/arm.exp: Run iwmmxt-bad2.
* gas/testsuite/gas/arm/iwmmxt.s: Increase offsets for wstrb and
wstrh.
* gas/testsuite/gas/arm/iwmmxt.d: Update expected results.
* gas/testsuite/gas/arm/iwmmxt-bad2.s: Test wstrb, wstrh, wldrb
and wldrh.
* gas/testsuite/gas/arm/iwmmxt-bad2.l: Update expected error
messages.

ChangeLog.csl
gas/config/tc-arm.c
gas/testsuite/gas/arm/arm.exp
gas/testsuite/gas/arm/iwmmxt-bad2.l
gas/testsuite/gas/arm/iwmmxt-bad2.s
gas/testsuite/gas/arm/iwmmxt.d
gas/testsuite/gas/arm/iwmmxt.s

index 873367d7c1f51cbcad1a82583b4174c748c44c39..55c3d639f622ee4ceb332f47f9b47c9463fbb9ec 100644 (file)
@@ -1,3 +1,18 @@
+2006-04-28  Joseph Myers  <joseph@codesourcery.com>
+
+       * gas/config/tc-arm.c (do_iwmmxt_wldstbh): Don't multiply offset
+       by 4 here.
+       (md_apply_fix3): Multiply offset by 4 here for
+       BFD_RELOC_ARM_CP_OFF_IMM_S2.
+       * gas/testsuite/gas/arm/arm.exp: Run iwmmxt-bad2.
+       * gas/testsuite/gas/arm/iwmmxt.s: Increase offsets for wstrb and
+       wstrh.
+       * gas/testsuite/gas/arm/iwmmxt.d: Update expected results.
+       * gas/testsuite/gas/arm/iwmmxt-bad2.s: Test wstrb, wstrh, wldrb
+       and wldrh.
+       * gas/testsuite/gas/arm/iwmmxt-bad2.l: Update expected error
+       messages.
+
 2006-01-16  Joseph Myers  <joseph@codesourcery.com>
 
        Backport:
index 1d02805a20013a5a663aebf0fafc99d4a4b1acf2..10d7d918b3e09488da43a3c5f7ab80fe7820de49 100644 (file)
@@ -5446,7 +5446,6 @@ static void
 do_iwmmxt_wldstbh (void)
 {
   inst.instruction |= inst.operands[0].reg << 12;
-  inst.reloc.exp.X_add_number *= 4;
   encode_arm_cp_address (1, TRUE, FALSE, BFD_RELOC_ARM_CP_OFF_IMM_S2);
 }
 
@@ -10886,6 +10885,7 @@ md_apply_fix3 (fixS *   fixP,
       if (value < -255 || value > 255)
        as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("co-processor offset out of range"));
+      value *= 4;
       goto cp_off_common;
 
     case BFD_RELOC_ARM_THUMB_OFFSET:
index 5fb82adaa547d1bf51dab85453592ae7a0085fe2..9faab609233e4d276ea8713642ce508380c36223 100644 (file)
@@ -64,6 +64,7 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
     run_errors_test "archv6t2-bad" "-march=armv6t2" "Invalid V6T2 instructions"
     run_errors_test "t16-bad" "-march=armv6k" "Valid ARM, invalid Thumb"
     run_errors_test "iwmmxt-bad" "-mcpu=iwmmxt" "iWMMXt errors"
+    run_errors_test "iwmmxt-bad2" "-mcpu=iwmmxt" "iWMMXt errors"
 
     if {[istarget *-*-*coff] || [istarget *-*-pe] || [istarget *-*-wince] ||
         [istarget *-*-*aout*] || [istarget *-*-netbsd] || [istarget *-*-riscix*]} then {
index 3305bdf57e0a0e8a65fcdbee52d6cadbe11842c3..1a43ebcdfbcda0f9f0a955f4a040c667b6f21a53 100644 (file)
@@ -1,3 +1,7 @@
 [^:]*: Assembler messages:
 [^:]*:1: Error: co-processor offset out of range
 [^:]*:2: Error: co-processor offset out of range
+[^:]*:3: Error: co-processor offset out of range
+[^:]*:4: Error: co-processor offset out of range
+[^:]*:5: Error: co-processor offset out of range
+[^:]*:6: Error: co-processor offset out of range
index 1132e10f7db094067e930aa9da961d602589cbc8..dc559a8927f66455df1bb305f7318f5800360bc2 100644 (file)
@@ -1,2 +1,6 @@
        wldrd   wr1, [r0, #3]
         wstrd   wr1, [r0, #0x400]
+        wstrb   wr1, [r0, #0x100]
+        wstrh   wr1, [r0, #0x100]
+        wldrb   wr1, [r0, #-0x100]
+        wldrh   wr1, [r0, #-0x100]
index 8565f528ad009f7683cfe18ca0922acbdee8c202..494199d2bc458b36e5c18c10248b5cb4183e7538 100644 (file)
@@ -135,8 +135,8 @@ Disassembly of section .text:
 0+1fc <[^>]*> ee65114b[        ]+wsrlhg[       ]+wr1, wr5, wcgr3
 0+200 <[^>]*> 4ea51148[        ]+wsrlwgmi[     ]+wr1, wr5, wcgr0
 0+204 <[^>]*> eee51149[        ]+wsrldg[       ]+wr1, wr5, wcgr1
-0+208 <[^>]*> ed811004[        ]+wstrb[        ]+wr1, \[r1, #4\]
-0+20c <[^>]*> ede11004[        ]+wstrh[        ]+wr1, \[r1, #4\]!
+0+208 <[^>]*> ed8110ff[        ]+wstrb[        ]+wr1, \[r1, #255\]
+0+20c <[^>]*> ed6110ff[        ]+wstrh[        ]+wr1, \[r1, #-255\]!
 0+210 <[^>]*> eca11101[        ]+wstrw[        ]+wr1, \[r1\], #4
 0+214 <[^>]*> edc111ff[        ]+wstrd[        ]+wr1, \[r1, #1020\]
 0+218 <[^>]*> fca1314b[        ]+wstrw[        ]+wcasf, \[r1\], #300
index ba599c1046f5a3e847dfb86335e5b97dcb800a89..0ebbad5cd3c7d8b3db47a15db748bf3a4272519e 100644 (file)
@@ -164,8 +164,8 @@ iwmmxt:
        wsrlwgmi        wr1, wr5, wcgr0
        wsrldg          wr1, wr5, wcgr1
 
-       wstrb           wr1, [r1, #4]
-       wstrh           wr1, [r1, #4]!
+       wstrb           wr1, [r1, #0xFF]
+       wstrh           wr1, [r1, #-0xFF]!
        wstrw           wr1, [r1], #4
        wstrd           wr1, [r1, #0x3FC]
        wstrw           wcasf, [r1], #300