| comment "subroutine prologue" |
| .macro gdbasm_enter |
| st r11,@-sp |
| st r13,@-sp |
| mv r11,sp |
| .endm |
| |
| comment "subroutine epilogue" |
| .macro gdbasm_leave |
| add3 sp,r11,0 |
| ld r13,@sp+ |
| ld r11,@sp+ |
| jmp r13 |
| .endm |
| |
| .macro gdbasm_call subr |
| bl \subr |
| .endm |
| |
| .macro gdbasm_several_nops |
| nop |
| nop |
| nop |
| nop |
| .endm |
| |
| comment "exit (0)" |
| .macro gdbasm_exit0 |
| ldi r4, 1 |
| ldi r0, 0 |
| trap 15 |
| .endm |
| |
| comment "crt0 startup" |
| .macro gdbasm_startup |
| ; R14 always contains memory base address (0) |
| |
| ldi r14,0 |
| |
| ; Set the USER and SYSTEM stack pointers. |
| |
| ldi r0, 0 ; zero arguments |
| ldi r1, 0 |
| mvtc r0, psw ; select SPI and set it |
| ldi sp, _stack |
| ldi r10, 0x8000 ; select SPU/FP and set it |
| mvtc r10, psw || ldi r11, 0; clear stack frame |
| ldi sp, _stack - 0x200 |
| ldi r13, 0 |
| |
| st r11, @-sp |
| st r13, @-sp |
| ; mv r11, sp |
| |
| .endm |