Newer
Older
uwuboot / source / arm9 / exception.s
@profi200 profi200 on 4 Jun 2016 978 bytes Lots of changes i don't all remember xD
.arm
.arch armv5te
.fpu softvfp

.global undefHandler
.global prefetchAbortHandler
.global dataAbortHandler

.type undefHandler STT_FUNC
.type prefetchAbortHandler STT_FUNC
.type dataAbortHandler STT_FUNC
.type exceptionHandler STT_FUNC

.extern guruMeditation



undefHandler:
	ldr sp, =(0x02000000-8)
	stmfd sp!, {r0-r12, lr}     @ Save all non-banked regs and lr (pc)
	mov r0, #0
	b exceptionHandler
prefetchAbortHandler:
	ldr sp, =(0x02000000-8)
	stmfd sp!, {r0-r12, lr}
	mov r0, #1
	b exceptionHandler
dataAbortHandler:
	ldr sp, =(0x02000000-8)
	stmfd sp!, {r0-r12, lr}
	mov r0, #2
exceptionHandler:
	mrs r1, spsr                @ Get saved cpsr
	str r1, [sp, #-4]!          @ Save spsr on exception stack
	mov r1, sp
	msr cpsr_c, #0xDF           @ Disable all interrupts, system mode
	str lr, [r1, #-4]!          @ Save lr on exception stack
	mov r2, sp
	mov sp, r1
	blx guruMeditation          @ r0 = exception type, r1 = reg dump ptr {lr, cpsr, r0-r12, pc + X}, r2 = sp