| comment "subroutine prologue" |
| .macro gdbasm_enter |
| addi sp,#-16,sp |
| sti fp, @(sp,0) |
| mov sp, fp |
| movsg lr, gr5 |
| sti gr5, @(fp,8) |
| .endm |
| |
| comment "subroutine epilogue" |
| .macro gdbasm_leave |
| ldi @(fp,8), gr5 |
| ld @(fp,gr0), fp |
| addi sp,#16,sp |
| jmpl @(gr5,gr0) |
| .endm |
| |
| .macro gdbasm_call subr |
| call \subr |
| .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..." |
| ldi @(gr0,0), gr5 |
| .endm |
| |
| comment "crt0 startup" |
| .macro gdbasm_startup |
| call .Lcall |
| .Lcall: movsg lr, gr4 |
| sethi #gprelhi(.Lcall), gr5 |
| setlo #gprello(.Lcall), gr5 |
| sub gr4, gr5, gr16 |
| |
| sethi #gprelhi(_stack), sp |
| setlo #gprello(_stack), sp |
| setlos #0, fp |
| add sp, gr16, sp |
| .endm |
| |
| comment "Declare a data variable" |
| .purgem gdbasm_datavar |
| .macro gdbasm_datavar name value |
| .data |
| \name: |
| .long \value |
| .endm |