1	comment "subroutine prologue"
2	.macro gdbasm_enter
3	addi sp,#-16,sp
4	sti fp, @(sp,0)
5	mov sp, fp
6	movsg lr, gr5
7	sti gr5, @(fp,8)
8	.endm
9
10	comment "subroutine epilogue"
11	.macro gdbasm_leave
12	ldi @(fp,8), gr5
13	ld @(fp,gr0), fp
14	addi sp,#16,sp
15	jmpl @(gr5,gr0)
16	.endm
17
18	.macro gdbasm_call subr
19	call \subr
20	.endm
21
22	.macro gdbasm_several_nops
23	nop
24	nop
25	nop
26	nop
27	.endm
28
29	comment "exit (0)"
30	.macro gdbasm_exit0
31	comment "Don't know how to exit, but this will certainly halt..."
32	ldi @(gr0,0), gr5
33	.endm
34
35	comment "crt0 startup"
36	.macro gdbasm_startup
37	call	.Lcall
38.Lcall:	movsg	lr, gr4
39	sethi   #gprelhi(.Lcall), gr5
40	setlo	#gprello(.Lcall), gr5
41	sub	 gr4, gr5, gr16
42
43	sethi	 #gprelhi(_stack), sp
44	setlo    #gprello(_stack), sp
45	setlos   #0, fp
46	add	 sp, gr16, sp
47	.endm
48
49	comment "Declare a data variable"
50	.purgem gdbasm_datavar
51	.macro gdbasm_datavar name value
52	.data
53\name:
54	.long	\value
55	.endm
56