| comment "subroutine prologue" |
| .macro gdbasm_enter |
| mov.w r6,@-r7 |
| mov.w r7,r6 |
| subs #2,r7 |
| .endm |
| |
| comment "subroutine epilogue" |
| .macro gdbasm_leave |
| adds #2,r7 |
| mov.w @r7+,r6 |
| rts |
| .endm |
| |
| .macro gdbasm_call subr |
| jsr @\subr |
| .endm |
| |
| .macro gdbasm_several_nops |
| nop |
| nop |
| nop |
| nop |
| .endm |
| |
| comment "exit (0)" |
| .macro gdbasm_exit0 |
| mov.w #0xdead,r1 |
| mov.w #0xbeef,r2 |
| mov.w #0,r0 |
| sleep |
| .endm |
| |
| comment "crt0 startup" |
| .macro gdbasm_startup |
| .section .stack |
| _stack: .long 1 |
| .section .text |
| .global _start |
| _start: |
| mov.w #0,r6 |
| mov.w #_stack,sp ; or mov.l #_stack,sp |
| mov.w #_edata,r0 |
| mov.w #_end,r1 |
| sub.w r2,r2 |
| .loop: mov.w r2,@r0 |
| adds #2,r0 |
| cmp r1,r0 |
| blo .loop |
| .endm |