From ef75f0145e5e0255be469edad543db0bacf338af Mon Sep 17 00:00:00 2001
From: Thiemo Seufer <ths@networkno.de>
Date: Fri, 5 May 2006 16:38:09 +0000
Subject: [PATCH] 	* gas/mips/noreorder.s, gas/mips/noreorder.d: New test
 for 	reorder/noreorder corner case. 	* gas/mips/mips.exp: Run new test.
 -------------------------------------------------------------------

---
 gas/testsuite/ChangeLog            |  6 ++++++
 gas/testsuite/gas/mips/mips.exp    |  2 ++
 gas/testsuite/gas/mips/noreorder.d | 23 +++++++++++++++++++++++
 gas/testsuite/gas/mips/noreorder.s | 25 +++++++++++++++++++++++++
 4 files changed, 56 insertions(+)
 create mode 100644 gas/testsuite/gas/mips/noreorder.d
 create mode 100644 gas/testsuite/gas/mips/noreorder.s

diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index dbed5162e8f..1cbea61ed4b 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-05  Nigel Stephens  <nigel@mips.com>
+
+	* gas/mips/noreorder.s, gas/mips/noreorder.d: New test for
+	reorder/noreorder corner case.
+	* gas/mips/mips.exp: Run new test.
+	
 2006-05-04  Kazu Hirata  <kazu@codesourcery.com>
 
 	* gas/arm/armv1.d (error-output): New.
diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp
index 382ff95f5c7..6c2a9f46847 100644
--- a/gas/testsuite/gas/mips/mips.exp
+++ b/gas/testsuite/gas/mips/mips.exp
@@ -781,4 +781,6 @@ if { [istarget mips*-*-vxworks*] } {
     }
     run_dump_test "vxworks1"
     run_dump_test "vxworks1-xgot"
+
+    run_dump_test "noreorder"
 }
diff --git a/gas/testsuite/gas/mips/noreorder.d b/gas/testsuite/gas/mips/noreorder.d
new file mode 100644
index 00000000000..0866ca01831
--- /dev/null
+++ b/gas/testsuite/gas/mips/noreorder.d
@@ -0,0 +1,23 @@
+#objdump: -dr --disassemble-zeroes
+#as: -march=mips2 -mabi=32
+#name: noreorder test
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+
+00000000 <per_cpu_trap_init>:
+   0:	00000000 	nop
+   4:	00000000 	nop
+   8:	0c000000 	jal	0 <per_cpu_trap_init>
+			8: R_MIPS_26	cpu_cache_init
+   c:	00000000 	nop
+  10:	8fbf0010 	lw	ra,16\(sp\)
+  14:	08000000 	j	0 <per_cpu_trap_init>
+			14: R_MIPS_26	tlb_init
+  18:	27bd0018 	addiu	sp,sp,24
+  1c:	00000000 	nop
+  20:	00000000 	nop
+  24:	1000fff6 	b	0 <per_cpu_trap_init>
+  28:	00000000 	nop
+  2c:	00000000 	nop
diff --git a/gas/testsuite/gas/mips/noreorder.s b/gas/testsuite/gas/mips/noreorder.s
new file mode 100644
index 00000000000..71e92efacf2
--- /dev/null
+++ b/gas/testsuite/gas/mips/noreorder.s
@@ -0,0 +1,25 @@
+	.text
+	.globl	per_cpu_trap_init
+	.ent	per_cpu_trap_init
+	.type	per_cpu_trap_init, @function
+per_cpu_trap_init:
+$L807:
+	nop
+	nop
+	# Removing this .align make the code assemble correctly
+	.align	3
+	jal	cpu_cache_init
+	lw	$31,16($sp)
+	.set	noreorder
+	j	tlb_init
+	addiu	$sp,$sp,24
+	# Replacing this .word with a nop causes the code to be assembled corrrectly
+	.word	0
+	# Removing this nop causes the code to be compiled correctly
+	nop
+	.set	reorder					
+
+	b	$L807
+	.end	per_cpu_trap_init
+
+	.p2align 4