Automatic date update in version.in
[binutils-gdb/blckswan.git] / gdb / testsuite / gdb.asm / s390.inc
blob16f1a7cc4d020516da6c36e90753376559a62e73
1 ### entry point code
2         .macro gdbasm_startup
4         # Align the stack pointer to an 8-byte boundary.
5         lhi %r0,-8
6         nr %r15,%r0
8         # Reserve space for the standard stack frame:
9         # back chain, and space for the callee to save its registers.
10         ahi %r15,-104
11         
12         # Zero this frame's back chain pointer.
13         xc 0(4,%r15),0(%r15)
14         .endm
17 ### Call a function.
18         .macro gdbasm_call subr
20         # Put the address of the constant in %r1, load the constant
21         # (SUBR's address), and jump to it.
22         bras %r1, .Lafterconst\@
23         .long \subr
24 .Lafterconst\@:
25         l %r1,0(%r1)
26         basr %r14,%r1
27         .endm
30 ### Exit with a zero status.
31         .macro gdbasm_exit0
32         lhi %r2, 0
33         svc 1
34         .endm
36 ### Standard subroutine prologue.
37         .macro gdbasm_enter
39         # Save all the callee-saves registers.  What the heck.
40         stm %r6,%r15,24(%r15)
42         # Allocate the stack frame, and write the back chain pointer.
43         # Keep the original SP in %r11.
44         lr %r1,%r15
45         ahi %r15,-96
46         st %r1,0(%r15)
47         .endm
50 ### Standard subroutine epilogue.
51         .macro gdbasm_leave
53         # Restore all our registers.  This also pops the frame, and
54         # restores our return address.
55         lm %r6,%r15,120(%r15)
57         # Jump to the return address.
58         br %r14
60         .endm
62 ### Several nops.
63         .macro gdbasm_several_nops
64         lr %r0, %r0
65         lr %r0, %r0
66         lr %r0, %r0
67         lr %r0, %r0
68         .endm
70 ### Declare an `int' variable.
71         .purgem gdbasm_datavar
72         .macro gdbasm_datavar name value
73         .data
74 \name:
75         .long \value
76         .endm