summaryrefslogtreecommitdiff
path: root/kernel/trampoline.S
diff options
context:
space:
mode:
authorFrans Kaashoek <[email protected]>2019-07-17 05:53:47 -0400
committerFrans Kaashoek <[email protected]>2019-07-17 05:53:47 -0400
commitb924e44f06c9c0882a2cffe6c9215b12c5aee2e6 (patch)
treeb1204b01142d7a5b41988b87a4c06b0aabe8b5c9 /kernel/trampoline.S
parentce53416f4970ebb137c8e66dc75488cfefaf084d (diff)
parentebc39372096280a4a5957d3e3836c859e5d78a79 (diff)
downloadxv6-labs-b924e44f06c9c0882a2cffe6c9215b12c5aee2e6.tar.gz
xv6-labs-b924e44f06c9c0882a2cffe6c9215b12c5aee2e6.tar.bz2
xv6-labs-b924e44f06c9c0882a2cffe6c9215b12c5aee2e6.zip
Merge branch 'riscv' of g.csail.mit.edu:xv6-dev into riscv
Diffstat (limited to 'kernel/trampoline.S')
-rw-r--r--kernel/trampoline.S6
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/trampoline.S b/kernel/trampoline.S
index dd4eb02..471a29c 100644
--- a/kernel/trampoline.S
+++ b/kernel/trampoline.S
@@ -17,7 +17,8 @@ trampout:
# a0: p->tf in user page table
# a1: new value for satp, for user page table
- # switch to user page table
+ # switch to user page table.
+ sfence.vma zero, zero
csrw satp, a1
# put the saved user a0 in sscratch, so we
@@ -120,7 +121,7 @@ trampin:
# restore kernel stack pointer from p->tf->kernel_sp
ld sp, 8(a0)
- # make tp hold the current hartid, from p->tf->hartid
+ # make tp hold the current hartid, from p->tf->kernel_hartid
ld tp, 32(a0)
# remember the address of usertrap(), p->tf->kernel_trap
@@ -128,6 +129,7 @@ trampin:
# restore kernel page table from p->tf->kernel_satp
ld t1, 0(a0)
+ sfence.vma zero, zero
csrw satp, t1
# a0 is no longer valid, since the kernel page