diff options
author | Robert Morris <[email protected]> | 2022-08-24 13:24:24 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2022-08-24 13:24:24 -0400 |
commit | 9c1b8a4eb085d7c639c2039fc14beba83d95653e (patch) | |
tree | c278acf9ced36ffd58dcb27aac5a6ef2457d7a1e /kernel | |
parent | 96047832c62e6a172c92f9ead6715b553d4c2271 (diff) | |
download | xv6-labs-9c1b8a4eb085d7c639c2039fc14beba83d95653e.tar.gz xv6-labs-9c1b8a4eb085d7c639c2039fc14beba83d95653e.tar.bz2 xv6-labs-9c1b8a4eb085d7c639c2039fc14beba83d95653e.zip |
sfence before writing satp, as well as after
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/fs.c | 2 | ||||
-rw-r--r-- | kernel/trampoline.S | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/kernel/fs.c b/kernel/fs.c index dea5864..c6bab15 100644 --- a/kernel/fs.c +++ b/kernel/fs.c @@ -194,7 +194,7 @@ static struct inode* iget(uint dev, uint inum); // Allocate an inode on device dev. // Mark it as allocated by giving it type type. // Returns an unlocked but allocated and referenced inode, -// or NULL if there is no free inode.. +// or NULL if there is no free inode. struct inode* ialloc(uint dev, short type) { diff --git a/kernel/trampoline.S b/kernel/trampoline.S index 0aaa413..7fb0b36 100644 --- a/kernel/trampoline.S +++ b/kernel/trampoline.S @@ -82,6 +82,7 @@ uservec: # load the kernel page table, from p->trapframe->kernel_satp ld t1, 0(a0) + sfence.vma zero, zero csrw satp, t1 sfence.vma zero, zero @@ -96,6 +97,7 @@ userret: # a0: user page table, for satp. # switch to the user page table. + sfence.vma zero, zero csrw satp, a0 sfence.vma zero, zero |