aboutsummaryrefslogtreecommitdiff
path: root/interrupt_vector.S
diff options
context:
space:
mode:
Diffstat (limited to 'interrupt_vector.S')
-rw-r--r--interrupt_vector.S10
1 files changed, 6 insertions, 4 deletions
diff --git a/interrupt_vector.S b/interrupt_vector.S
index af80eec..9404839 100644
--- a/interrupt_vector.S
+++ b/interrupt_vector.S
@@ -20,10 +20,11 @@ undef_handler_caller:
svc_handler_caller:
ldr sp, =_supervisor_stack_top
- push {r5, lr}
+ push {r0-r12, lr}
+ mov r0, sp
ldr r5, =supervisor_call_handler
blx r5
- ldm sp!, {r5, pc} ^
+ ldm sp!, {r0-r12, pc} ^
abort_handler_caller:
ldr sp, =_supervisor_stack_top
@@ -38,10 +39,11 @@ generic_handler_caller:
irq_handler_caller:
ldr sp, =_irq_stack_top
sub lr, #4
- push {r0-r3, lr}
+ push {r0-r12, lr}
+ mov r0, sp
ldr r3, =irq_handler
blx r3
- ldm sp!, {r0-r3, pc} ^
+ ldm sp!, {r0-r12, pc} ^
fiq_handler_caller:
ldr sp, =_fiq_stack_top