aboutsummaryrefslogtreecommitdiff
path: root/interrupt_vector.S
diff options
context:
space:
mode:
authorWojtek Kosior <kwojtus@protonmail.com>2020-01-03 04:53:01 +0100
committerWojtek Kosior <kwojtus@protonmail.com>2020-01-03 04:53:01 +0100
commitffb2c4adfb8e65e355b39abd39d994eebc649c98 (patch)
tree760ef43f89b480ecd0be4bfd9312eb0d8c744d05 /interrupt_vector.S
parent6bf5a3b8c6e8a5d1cb3fb4880a5d9688ab094c62 (diff)
downloadrpi-MMU-example-ffb2c4adfb8e65e355b39abd39d994eebc649c98.tar.gz
rpi-MMU-example-ffb2c4adfb8e65e355b39abd39d994eebc649c98.zip
add (not yet fully working - it can only send through uart now) interrupt-driven uart together with "scheduler"
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