1*b725ae77Skettenis	comment "subroutine prologue"
2*b725ae77Skettenis	.macro gdbasm_enter
3*b725ae77Skettenis	alloc r33=ar.pfs,0,2,0,0
4*b725ae77Skettenis	mov r32=b0
5*b725ae77Skettenis	nop.i 0
6*b725ae77Skettenis	.endm
7*b725ae77Skettenis
8*b725ae77Skettenis	comment "subroutine epilogue"
9*b725ae77Skettenis	.macro gdbasm_leave
10*b725ae77Skettenis	nop.m 0
11*b725ae77Skettenis	mov ar.pfs=r33
12*b725ae77Skettenis	mov b0=r32
13*b725ae77Skettenis	nop.m 0
14*b725ae77Skettenis	nop.f 0
15*b725ae77Skettenis	br.ret.sptk.many b0
16*b725ae77Skettenis	.endm
17*b725ae77Skettenis
18*b725ae77Skettenis	.macro gdbasm_call subr
19*b725ae77Skettenis	nop.m 0
20*b725ae77Skettenis	nop.f 0
21*b725ae77Skettenis	br.call.sptk.many b0=\subr
22*b725ae77Skettenis	.endm
23*b725ae77Skettenis
24*b725ae77Skettenis	.macro gdbasm_several_nops
25*b725ae77Skettenis	nop.m 0
26*b725ae77Skettenis	nop.i 0
27*b725ae77Skettenis	nop.i 0
28*b725ae77Skettenis	.endm
29*b725ae77Skettenis
30*b725ae77Skettenis	comment "exit (0)"
31*b725ae77Skettenis	.macro gdbasm_exit0
32*b725ae77Skettenis	break.m 0x0
33*b725ae77Skettenis	nop.m 0
34*b725ae77Skettenis	nop.i 0
35*b725ae77Skettenis	.endm
36*b725ae77Skettenis
37*b725ae77Skettenis	comment "crt0 startup"
38*b725ae77Skettenis	.macro gdbasm_startup
39*b725ae77Skettenis	gdbasm_enter
40*b725ae77Skettenis	mov r32=r0
41*b725ae77Skettenis	nop.i 0
42*b725ae77Skettenis	nop.i 0
43*b725ae77Skettenis	.endm
44*b725ae77Skettenis
45*b725ae77Skettenis	comment "Declare a data variable"
46*b725ae77Skettenis	.macro gdbasm_datavar name value
47*b725ae77Skettenis	.data
48*b725ae77Skettenis\name:
49*b725ae77Skettenis	.long	\value
50*b725ae77Skettenis	.endm
51