summaryrefslogtreecommitdiff
path: root/kernel/kernelvec.S
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-07-26 09:38:22 -0400
committerRobert Morris <[email protected]>2019-07-26 09:38:22 -0400
commitfa2e2e3c81b2686229acc204ece380953a8031ea (patch)
tree67c055fc880e8d286124814fff649c170434ea3e /kernel/kernelvec.S
parent8d30e21b59d2f6d48e593cd6c2399d0743971155 (diff)
downloadxv6-labs-fa2e2e3c81b2686229acc204ece380953a8031ea.tar.gz
xv6-labs-fa2e2e3c81b2686229acc204ece380953a8031ea.tar.bz2
xv6-labs-fa2e2e3c81b2686229acc204ece380953a8031ea.zip
uservec before userret in trampoline, to match book and kernelvec
Diffstat (limited to 'kernel/kernelvec.S')
-rw-r--r--kernel/kernelvec.S5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/kernelvec.S b/kernel/kernelvec.S
index 9aabe96..222b172 100644
--- a/kernel/kernelvec.S
+++ b/kernel/kernelvec.S
@@ -8,8 +8,10 @@
.globl kernelvec
.align 4
kernelvec:
+ // make room to save registers.
addi sp, sp, -256
+ // save the registers.
sd ra, 0(sp)
sd sp, 8(sp)
sd gp, 16(sp)
@@ -42,8 +44,10 @@ kernelvec:
sd t5, 232(sp)
sd t6, 240(sp)
+ // call the C trap handler in trap.c
call kerneltrap
+ // restore registers.
ld ra, 0(sp)
ld sp, 8(sp)
ld gp, 16(sp)
@@ -78,6 +82,7 @@ kernelvec:
addi sp, sp, 256
+ // return to whatever we were doing in the kernel.
sret
#