# Raise(exception:r3:UL,exceptioninfo:r4:UL)

	.sdreg	r2
	.global	_Raise
	.global	_exception
	.global	_exceptioninfo
	.global	lastexceptptr
	.global	laststackptr
	.global	lastframeptr
	.global	lastlocalptr

_Raise:	stw	r3,_exception(r2)
	stw	r4,_exceptioninfo(r2)
	lwz	r3,lastexceptptr(r2)
	mr.	r3,r3
	beq	.exit
	lwz	r14,lastlocalptr(r2)
	stw	r13,lastframeptr(r2)
	lwz	r1,laststackptr(r2)
	lwz	r0,0(r14)
	stw	r0,lastexceptptr(r2)
	lwz	r0,4(r14)
	stw	r0,laststackptr(r2)
	lwz	r0,8(r14)
	stw	r0,lastframeptr(r2)
	lwz	r0,12(r14)
	stw	r0,lastlocalptr(r2)
	mtlr	r3
	blr
.exit:	b	mainend

	.tocd
_exception:	.long	0
_exceptioninfo:	.long	0
lastexceptptr:	.long	0
laststackptr:	.long	0	# r1 contents
lastframeptr:	.long	0	# r13 contents
lastlocalptr:	.long	0	# r14 contents

	.extern	mainend
