1	comment "subroutine declare"
2	.purgem gdbasm_declare
3	.macro gdbasm_declare name
4	.align	2
5	.ent	\name
6	.type	\name,@function
7\name:
8	.endm
9
10	comment "subroutine prologue"
11	.macro gdbasm_enter
12	.frame	$fp, 32, $31
13	.mask	0xd0000000,-4
14	.set	noreorder
15	.cpload	$25
16	.set	reorder
17	subu	$sp, $sp, 32
18	.cprestore 16
19	sw	$31, 28($sp)
20	sw	$fp, 24($sp)
21	sw	$28, 20($sp)
22	move	$fp, $sp
23	.endm
24
25	comment "subroutine epilogue"
26	.macro gdbasm_leave
27	lw	$31, 28($sp)
28	lw	$fp, 24($sp)
29	.set	noreorder
30	.set	nomacro
31	j	$31
32	addu	$sp, $sp, 32
33	.set	macro
34	.set	reorder
35	.endm
36
37	comment "subroutine end"
38	.purgem gdbasm_end
39	.macro gdbasm_end name
40	.end	\name
41	.endm
42
43	.macro gdbasm_call subr
44	la	$25, \subr
45	jal	$31, $25
46	.endm
47
48	.macro gdbasm_several_nops
49	nop
50	nop
51	nop
52	nop
53	.endm
54
55	comment "exit (0)"
56	.macro gdbasm_exit0
57	comment "Don't know how to exit, but this will certainly halt..."
58	lw 	$2, 0($0)
59	.endm
60
61	comment "crt0 startup"
62	.macro gdbasm_startup
63	move	$fp, $sp
64	.endm
65