Backport:
	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-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.
diff --git a/ChangeLog.csl b/ChangeLog.csl
index d3000a1..873367d 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,27 @@
+2006-01-16  Joseph Myers  <joseph@codesourcery.com>
+
+	Backport:
+	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-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-04-13  Mark Mitchell <mark@codesourcery.com>
 
 	* doc/binutils.info: Remove.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 31107fe..1d02805 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -5468,7 +5468,7 @@
 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/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 @@
 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 @@
 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 @@
 	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 @@
 	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