summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-09-03 16:29:48 -0400
committerRobert Morris <[email protected]>2019-09-03 16:29:48 -0400
commit25e113138d677eacb8f2ce872ca7ff7596ae44e0 (patch)
treec565f732e0113cb8f5fbb54ecb36e379690d6485
parent9b9e2dd0f24428659d1f931009dd6429a9f5f1ac (diff)
downloadxv6-labs-25e113138d677eacb8f2ce872ca7ff7596ae44e0.tar.gz
xv6-labs-25e113138d677eacb8f2ce872ca7ff7596ae44e0.tar.bz2
xv6-labs-25e113138d677eacb8f2ce872ca7ff7596ae44e0.zip
sfence.vma in trampoline as well
-rw-r--r--kernel/main.c4
-rw-r--r--kernel/trampoline.S8
2 files changed, 7 insertions, 5 deletions
diff --git a/kernel/main.c b/kernel/main.c
index a936fd3..5d7ad49 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -13,7 +13,9 @@ main()
if(cpuid() == 0){
consoleinit();
printfinit();
- printf("hart %d starting\n", cpuid());
+ printf("\n");
+ printf("xv6 kernel is booting\n");
+ printf("\n");
kinit(); // physical page allocator
kvminit(); // create kernel page table
kvminithart(); // turn on paging
diff --git a/kernel/trampoline.S b/kernel/trampoline.S
index 24499d9..f47c3ff 100644
--- a/kernel/trampoline.S
+++ b/kernel/trampoline.S
@@ -75,8 +75,8 @@ uservec:
# restore kernel page table from p->tf->kernel_satp
ld t1, 0(a0)
- sfence.vma zero, zero
csrw satp, t1
+ sfence.vma zero, zero
# a0 is no longer valid, since the kernel page
# table does not specially map p->td.
@@ -89,12 +89,12 @@ userret:
# userret(TRAPFRAME, pagetable)
# switch from kernel to user.
# usertrapret() calls here.
- # a0: TRAPFRAME, in user page table
+ # a0: TRAPFRAME, in user page table
# a1: user page table, for satp
- # switch to the user page table.
- sfence.vma zero, zero
+ # switch to the user page table.
csrw satp, a1
+ sfence.vma zero, zero
# put the saved user a0 in sscratch, so we
# can swap it with our a0 (TRAPFRAME) in the last step.