|  | comment "subroutine declare" | 
|  | .purgem gdbasm_declare | 
|  | .macro gdbasm_declare name | 
|  | .align	2 | 
|  | .ent	\name | 
|  | .type	\name,@function | 
|  | \name: | 
|  | .endm | 
|  |  | 
|  | comment "subroutine prologue" | 
|  | .macro gdbasm_enter | 
|  | .frame	$fp, 32, $31 | 
|  | .mask	0xd0000000,-4 | 
|  | .set	noreorder | 
|  | .cpload	$25 | 
|  | .set	reorder | 
|  | subu	$sp, $sp, 32 | 
|  | .cprestore 16 | 
|  | sw	$31, 28($sp) | 
|  | sw	$fp, 24($sp) | 
|  | sw	$28, 20($sp) | 
|  | move	$fp, $sp | 
|  | .endm | 
|  |  | 
|  | comment "subroutine epilogue" | 
|  | .macro gdbasm_leave | 
|  | lw	$31, 28($sp) | 
|  | lw	$fp, 24($sp) | 
|  | .set	noreorder | 
|  | .set	nomacro | 
|  | j	$31 | 
|  | addu	$sp, $sp, 32 | 
|  | .set	macro | 
|  | .set	reorder | 
|  | .endm | 
|  |  | 
|  | comment "subroutine end" | 
|  | .purgem gdbasm_end | 
|  | .macro gdbasm_end name | 
|  | .end	\name | 
|  | .endm | 
|  |  | 
|  | .macro gdbasm_call subr | 
|  | la	$25, \subr | 
|  | jal	$31, $25 | 
|  | .endm | 
|  |  | 
|  | .macro gdbasm_several_nops | 
|  | nop | 
|  | nop | 
|  | nop | 
|  | nop | 
|  | .endm | 
|  |  | 
|  | comment "exit (0)" | 
|  | .macro gdbasm_exit0 | 
|  | comment "Don't know how to exit, but this will certainly halt..." | 
|  | lw 	$2, 0($0) | 
|  | .endm | 
|  |  | 
|  | comment "crt0 startup" | 
|  | .macro gdbasm_startup | 
|  | move	$fp, $sp | 
|  | .endm |