aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2005-08-03 09:50:43 +0000
committerNick Clifton <nickc@redhat.com>2005-08-03 09:50:43 +0000
commitf2184508ddc02259748ca1bd0363a6452ac6b564 (patch)
tree05545548ba3b8161118ab0c0622712be1a775312 /gas
parent9f4fb50211b7f57d241f911223874a1d16ae9c1a (diff)
downloadgdb-f2184508ddc02259748ca1bd0363a6452ac6b564.zip
gdb-f2184508ddc02259748ca1bd0363a6452ac6b564.tar.gz
gdb-f2184508ddc02259748ca1bd0363a6452ac6b564.tar.bz2
config/tc-arm.c (do_iwmmxt_wldstd): Correct the offset range for WLDRD/WSTRD
instruction. gas/arm/iwmmxt-bad2.s: New file: Check for error messages about erroneous offsets in iwmmxt instructions. Cannot be part of iwmmxt-bad.s because the errors there stop the assembler before it gets to check the offsets in instructions. gas/arm/iwmmxt-bad2.d: New file. gas/arm/iwmmxt-bad2.l: New file: Expected error messages. gas/arm/iwmmxt.s: Change the offset values of the WLDRD, WSTRD and WSTRW instructions to be larger than +/-255. gas/arm/iwmmxt.d: Fix the expected results for these instructions.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c2
-rw-r--r--gas/testsuite/ChangeLog16
-rw-r--r--gas/testsuite/gas/arm/iwmmxt-bad2.d3
-rw-r--r--gas/testsuite/gas/arm/iwmmxt-bad2.l3
-rw-r--r--gas/testsuite/gas/arm/iwmmxt-bad2.s2
-rw-r--r--gas/testsuite/gas/arm/iwmmxt.d6
-rw-r--r--gas/testsuite/gas/arm/iwmmxt.s6
8 files changed, 36 insertions, 7 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index e4ff266..ac2b865 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-02 Khem Raj <kraj@mvista.com>
+
+ * config/tc-arm.c (do_iwmmxt_wldstd): Correct the offset range for
+ WLDRD/WSTRD instruction.
+
2005-08-02 Alan Modra <amodra@bigpond.net.au>
* config/tc-ppc.c (md_apply_fix <ELF>): Don't warn on overflow
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 754bc4c..4033836 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -5516,7 +5516,7 @@ static void
do_iwmmxt_wldstd (void)
{
inst.instruction |= inst.operands[0].reg << 12;
- encode_arm_cp_address (1, TRUE, FALSE, BFD_RELOC_ARM_CP_OFF_IMM_S2);
+ encode_arm_cp_address (1, TRUE, FALSE, 0);
}
static void
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 579441c..2eabaf6 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2005-08-03 Nick Clifton <nickc@redhat.com>
+
+ * gas/arm/iwmmxt-bad2.s: New file: Check for error messages about
+ erroneous offsets in iwmmxt instructions. Cannot be part of
+ iwmmxt-bad.s because the errors there stop the assembler before it
+ gets to check the offsets in instructions.
+ * gas/arm/iwmmxt-bad2.d: New file.
+ * gas/arm/iwmmxt-bad2.l: New file: Expected error messages.
+
+2005-08-02 Khem Raj <kraj@mvista.com>
+
+ * gas/arm/iwmmxt.s: Change the offset values of the WLDRD, WSTRD
+ and WSTRW instructions to be larger than +/-255.
+ * gas/arm/iwmmxt.d: Fix the expected results for these
+ instructions.
+
2005-07-29 Paul Brook <paul@codesourcery.com>
* gas/arm/thumb32.d: Fix expected output for writeback addressing
diff --git a/gas/testsuite/gas/arm/iwmmxt-bad2.d b/gas/testsuite/gas/arm/iwmmxt-bad2.d
new file mode 100644
index 0000000..c8587a4
--- /dev/null
+++ b/gas/testsuite/gas/arm/iwmmxt-bad2.d
@@ -0,0 +1,3 @@
+#name: iWMMXt CoProcessor offset errors
+#as: -mcpu=iwmmxt
+#error-output: iwmmxt-bad2.l
diff --git a/gas/testsuite/gas/arm/iwmmxt-bad2.l b/gas/testsuite/gas/arm/iwmmxt-bad2.l
new file mode 100644
index 0000000..3305bdf
--- /dev/null
+++ b/gas/testsuite/gas/arm/iwmmxt-bad2.l
@@ -0,0 +1,3 @@
+[^:]*: Assembler messages:
+[^:]*:1: Error: co-processor offset out of range
+[^:]*:2: Error: co-processor offset out of range
diff --git a/gas/testsuite/gas/arm/iwmmxt-bad2.s b/gas/testsuite/gas/arm/iwmmxt-bad2.s
new file mode 100644
index 0000000..1132e10
--- /dev/null
+++ b/gas/testsuite/gas/arm/iwmmxt-bad2.s
@@ -0,0 +1,2 @@
+ wldrd wr1, [r0, #3]
+ wstrd wr1, [r0, #0x400]
diff --git a/gas/testsuite/gas/arm/iwmmxt.d b/gas/testsuite/gas/arm/iwmmxt.d
index f7d81ec..8565f52 100644
--- a/gas/testsuite/gas/arm/iwmmxt.d
+++ b/gas/testsuite/gas/arm/iwmmxt.d
@@ -74,7 +74,7 @@ Disassembly of section .text:
0+108 <[^>]*> ed901024[ ]+wldrb[ ]+wr1, \[r0, #36\]
0+10c <[^>]*> 0df12018[ ]+wldrheq[ ]+wr2, \[r1, #24\]!
0+110 <[^>]*> 1cb23104[ ]+wldrwne[ ]+wr3, \[r2\], #16
-0+114 <[^>]*> 6dd34102[ ]+wldrdvs[ ]+wr4, \[r3, #8\]
+0+114 <[^>]*> 6d534153[ ]+wldrdvs[ ]+wr4, \[r3, #-332\]
0+118 <[^>]*> fdb12105[ ]+wldrw[ ]+wcssf, \[r1, #20\]!
0+11c <[^>]*> ee474109[ ]+wmacu[ ]+wr4, wr7, wr9
0+120 <[^>]*> 2e6a810e[ ]+wmacscs[ ]+wr8, wr10, wr14
@@ -138,8 +138,8 @@ Disassembly of section .text:
0+208 <[^>]*> ed811004[ ]+wstrb[ ]+wr1, \[r1, #4\]
0+20c <[^>]*> ede11004[ ]+wstrh[ ]+wr1, \[r1, #4\]!
0+210 <[^>]*> eca11101[ ]+wstrw[ ]+wr1, \[r1\], #4
-0+214 <[^>]*> edc11101[ ]+wstrd[ ]+wr1, \[r1, #4\]
-0+218 <[^>]*> fca13101[ ]+wstrw[ ]+wcasf, \[r1\], #4
+0+214 <[^>]*> edc111ff[ ]+wstrd[ ]+wr1, \[r1, #1020\]
+0+218 <[^>]*> fca1314b[ ]+wstrw[ ]+wcasf, \[r1\], #300
0+21c <[^>]*> 3e1311ae[ ]+wsubbuscc[ ]+wr1, wr3, wr14
0+220 <[^>]*> ee5311ae[ ]+wsubhus[ ]+wr1, wr3, wr14
0+224 <[^>]*> 3e9311ae[ ]+wsubwuscc[ ]+wr1, wr3, wr14
diff --git a/gas/testsuite/gas/arm/iwmmxt.s b/gas/testsuite/gas/arm/iwmmxt.s
index 5cf1551..ba599c1 100644
--- a/gas/testsuite/gas/arm/iwmmxt.s
+++ b/gas/testsuite/gas/arm/iwmmxt.s
@@ -88,7 +88,7 @@ iwmmxt:
wldrb wr1, [r0, #36]
wldrheq wr2, [r1, #24]!
wldrwne wr3, [r2], #16
- wldrdvs wr4, [r3, #8]
+ wldrdvs wr4, [r3, #-332]
wldrw wcssf, [r1, #20]!
wmacu wr4, wr7, wr9
@@ -167,8 +167,8 @@ iwmmxt:
wstrb wr1, [r1, #4]
wstrh wr1, [r1, #4]!
wstrw wr1, [r1], #4
- wstrd wr1, [r1, #4]
- wstrw wcasf, [r1], #4
+ wstrd wr1, [r1, #0x3FC]
+ wstrw wcasf, [r1], #300
wsubbusul wr1, wr3, wr14
wsubhus wr1, wr3, wr14