| 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 |