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