1 comment "subroutine declare" 2 .purgem gdbasm_declare 3 .macro gdbasm_declare name 4 .ent \name 5 \name: 6 .endm 7 8 comment "subroutine prologue" 9 .macro gdbasm_enter 10 .frame $30, 16, $26, 0 11 .mask 0x04000000, -16 12 ldgp $gp, 0($27) 13 subq $sp, 16, $sp 14 stq $26, 0($sp) 15 .prologue 1 16 .endm 17 18 comment "subroutine epilogue" 19 .macro gdbasm_leave 20 ldq $26, 0($sp) 21 addq $sp, 16, $sp 22 ret 23 .endm 24 25 comment "subroutine end" 26 .purgem gdbasm_end 27 .macro gdbasm_end name 28 .end \name 29 .endm 30 31 comment "subroutine call" 32 /* Can't use ldgp here because the finish-frame test expects the 33 pc to wind up on the next line. That's ok, we're all local. */ 34 .macro gdbasm_call subr 35 jsr $26, \subr 36 .endm 37 38 .macro gdbasm_several_nops 39 nop 40 nop 41 nop 42 nop 43 .endm 44 45 comment "exit (0)" 46 .macro gdbasm_exit0 47 lda $16, 0($31) 48 lda $0, 1($31) 49 callsys 50 .endm 51 52 comment "crt0 startup" 53 .macro gdbasm_startup 54 .frame $31, 0, $31, 0 55 .prologue 56 ldgp $gp, 0($27) 57 .endm 58 59 comment "Declare a data variable" 60 .purgem gdbasm_datavar 61 .macro gdbasm_datavar name value 62 .data 63 \name: 64 .long \value 65 .endm 66