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