|  | comment "subroutine prologue" | 
|  | .macro gdbasm_enter | 
|  | alloc r33=ar.pfs,0,2,0,0 | 
|  | mov r32=b0 | 
|  | nop.i 0 | 
|  | .endm | 
|  |  | 
|  | comment "subroutine epilogue" | 
|  | .macro gdbasm_leave | 
|  | nop.m 0 | 
|  | mov ar.pfs=r33 | 
|  | mov b0=r32 | 
|  | nop.m 0 | 
|  | nop.f 0 | 
|  | br.ret.sptk.many b0 | 
|  | .endm | 
|  |  | 
|  | .macro gdbasm_call subr | 
|  | nop.m 0 | 
|  | nop.f 0 | 
|  | br.call.sptk.many b0=\subr | 
|  | .endm | 
|  |  | 
|  | .macro gdbasm_several_nops | 
|  | nop.m 0 | 
|  | nop.i 0 | 
|  | nop.i 0 | 
|  | .endm | 
|  |  | 
|  | comment "exit (0)" | 
|  | .macro gdbasm_exit0 | 
|  | break.m 0x0 | 
|  | nop.m 0 | 
|  | nop.i 0 | 
|  | .endm | 
|  |  | 
|  | comment "crt0 startup" | 
|  | .macro gdbasm_startup | 
|  | gdbasm_enter | 
|  | mov r32=r0 | 
|  | nop.i 0 | 
|  | nop.i 0 | 
|  | .endm | 
|  |  | 
|  | comment "Declare a data variable" | 
|  | .purgem gdbasm_datavar | 
|  | .macro gdbasm_datavar name value | 
|  | .data | 
|  | \name: | 
|  | .long	\value | 
|  | .endm |