summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2003-05-07 21:52:53 +0000
committerJim Blandy <jimb@codesourcery.com>2003-05-07 21:52:53 +0000
commitb3bfb09059216dae6d01ea3ffea47858f8463140 (patch)
treec50df5cf9f0363c5a4576ff5d2cc7e934d8d4ea8
parent46b80d9ce900fb652bdbce6394b0b10269ffdf9d (diff)
downloadgdb-b3bfb09059216dae6d01ea3ffea47858f8463140.tar.gz
Add support for assembly source testing on the s390x.
* gdb.asm/asm-source.exp: Add a case for the s390x-*-* architecture. * gdb.asm/s390x.inc: New file.
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.asm/asm-source.exp3
-rw-r--r--gdb/testsuite/gdb.asm/s390x.inc68
3 files changed, 76 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c2b3631bea2..c53111d2903 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2003-05-07 Jim Blandy <jimb@redhat.com>
+ Add support for assembly source testing on the s390x.
+ * gdb.asm/asm-source.exp: Add a case for the s390x-*-*
+ architecture.
+ * gdb.asm/s390x.inc: New file.
+
* gdb.asm/asm-source.exp: Use a 'switch -glob' statement, not a
succession of 'if' statements.
diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
index 8194f9efb97..e4aa7be4fd9 100644
--- a/gdb/testsuite/gdb.asm/asm-source.exp
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
@@ -48,6 +48,9 @@ switch -glob -- [istarget] {
"s390-*-*" {
set asm-arch s390
}
+ "s390x-*-*" {
+ set asm-arch s390x
+ }
"x86_64-*-*" {
set asm-arch x86_64
set asm-flags "-gdwarf2 -I${srcdir}/${subdir} -I${objdir}/${subdir}"
diff --git a/gdb/testsuite/gdb.asm/s390x.inc b/gdb/testsuite/gdb.asm/s390x.inc
new file mode 100644
index 00000000000..4e5bf2ea65d
--- /dev/null
+++ b/gdb/testsuite/gdb.asm/s390x.inc
@@ -0,0 +1,68 @@
+### entry point code
+ .macro gdbasm_startup
+
+ # Align the stack pointer to an 8-byte boundary.
+ lghi %r0,-16
+ ngr %r15,%r0
+
+ # Reserve space for the standard stack frame:
+ # back chain, and space for the callee to save its registers.
+ aghi %r15,-168
+
+ # Zero this frame's back chain pointer.
+ xc 0(8,%r15),0(%r15)
+ .endm
+
+
+### Call a function.
+ .macro gdbasm_call subr
+ brasl %r14, \subr
+ .endm
+
+
+### Exit with a zero status.
+ .macro gdbasm_exit0
+ lghi %r2, 0
+ svc 1
+ .endm
+
+### Standard subroutine prologue.
+ .macro gdbasm_enter
+
+ # Save all the callee-saves registers. What the heck.
+ stmg %r6,%r15,48(%r15)
+
+ # Allocate the stack frame, and write the back chain pointer.
+ # Keep the original SP in %r11.
+ lgr %r11,%r15
+ aghi %r15,-168
+ stg %r11,0(%r15)
+ .endm
+
+
+### Standard subroutine epilogue.
+ .macro gdbasm_leave
+
+ # Restore all our registers. This also pops the frame, and
+ # restores our return address.
+ lmg %r6,%r15,216(%r15)
+
+ # Jump to the return address.
+ br %r14
+
+ .endm
+
+### Several nops.
+ .macro gdbasm_several_nops
+ lr %r0, %r0
+ lr %r0, %r0
+ lr %r0, %r0
+ lr %r0, %r0
+ .endm
+
+### Declare an `int' variable.
+ .macro gdbasm_datavar name value
+ .data
+\name:
+ .long \value
+ .endm