        comment "subroutine declare"
        .purgem gdbasm_declare
        .macro gdbasm_declare name
	.section	".opd","aw"
\name:
	.quad .\name, .TOC.@tocbase, 0
	.section	".text"
	.type	\name, @function
.\name:
        .endm

	comment "subroutine prologue"
	.macro gdbasm_enter
	stdu 1, -112(1)
	mflr 0
	std 0, 128(1)
	.endm

	comment "subroutine epilogue"
	.macro gdbasm_leave
	ld 0, 128(1)
	mtlr 0
	ld 1, 0(1)
	blr
	.endm

	.macro gdbasm_call subr
	bl \subr
	nop
	.endm

	.macro gdbasm_several_nops
	nop
	nop
	nop
	nop
	.endm

	comment "exit (0)"
	.macro gdbasm_exit0
	comment "sys_exit"
	li	0, 1
	sc
	.endm

	comment "crt0 startup"
	.macro gdbasm_startup
	.p2align 2
	.endm

	comment "Declare a data variable"
	.purgem gdbasm_datavar
	.macro gdbasm_datavar name value
	.section	".data"
\name:
	.long \value
	.endm
