summaryrefslogtreecommitdiff
path: root/kernel/trampoline.S
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-07-16 17:02:21 -0400
committerRobert Morris <[email protected]>2019-07-16 17:02:21 -0400
commitebc39372096280a4a5957d3e3836c859e5d78a79 (patch)
tree8df08ba410ac0f829b120f76e896bfe3658ddb96 /kernel/trampoline.S
parent6bbc2b2245c5b006824eb42ef33d5b296158a693 (diff)
downloadxv6-labs-ebc39372096280a4a5957d3e3836c859e5d78a79.tar.gz
xv6-labs-ebc39372096280a4a5957d3e3836c859e5d78a79.tar.bz2
xv6-labs-ebc39372096280a4a5957d3e3836c859e5d78a79.zip
conservatively call sfence.vma before every satp load.
Diffstat (limited to 'kernel/trampoline.S')
-rw-r--r--kernel/trampoline.S4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/trampoline.S b/kernel/trampoline.S
index b992ea6..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
@@ -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