From 09bf6082f5ff04bb271e9d6904a29df03027ea37 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Wed, 7 May 2003 21:52:53 +0000 Subject: [PATCH] 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/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.asm/asm-source.exp | 3 ++ gdb/testsuite/gdb.asm/s390x.inc | 68 ++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 gdb/testsuite/gdb.asm/s390x.inc diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c2b3631..c53111d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2003-05-07 Jim Blandy + 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 8194f9e..e4aa7be 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 0000000..4e5bf2e --- /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 -- 2.7.4