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