summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-06-04 10:43:45 -0400
committerRobert Morris <[email protected]>2019-06-04 10:43:45 -0400
commit0e131b226336808c135795f5b9d7defc5a58b2ae (patch)
tree226cf0c8f1043d99175aee8835baf570cdf662e6 /vm.c
parentb78894f34ebbceb23bcf36ff820fefb942b54ccf (diff)
downloadxv6-labs-0e131b226336808c135795f5b9d7defc5a58b2ae.tar.gz
xv6-labs-0e131b226336808c135795f5b9d7defc5a58b2ae.tar.bz2
xv6-labs-0e131b226336808c135795f5b9d7defc5a58b2ae.zip
fix a problem with end. make uartputc() wait until h/w is ready.
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/vm.c b/vm.c
index 89b1aa2..1e014a0 100644
--- a/vm.c
+++ b/vm.c
@@ -33,12 +33,11 @@ kvminit()
// PLIC
mappages(kernel_pagetable, PLIC, 0x4000000,
PLIC, PTE_R | PTE_W);
-
// map kernel text executable and read-only.
mappages(kernel_pagetable, KERNBASE, (uint64)etext-KERNBASE,
KERNBASE, PTE_R | PTE_X);
-
+
// map kernel data and the physical RAM we'll make use of.
mappages(kernel_pagetable, (uint64)etext, PHYSTOP-(uint64)etext,
(uint64)etext, PTE_R | PTE_W);
@@ -52,14 +51,8 @@ kvminit()
mappages(kernel_pagetable, TRAMPOLINE, PGSIZE,
(uint64)trampout, PTE_R | PTE_X);
- kvmswitch();
-}
-
-// Switch h/w page table register to the kernel's page table,
-// and enable paging.
-void
-kvmswitch(void)
-{
+ // Switch h/w page table register to the kernel's page table,
+ // and enable paging.
w_satp(MAKE_SATP(kernel_pagetable));
}
@@ -214,7 +207,7 @@ uvmalloc(pagetable_t pagetable, uint64 oldsz, uint64 newsz)
for(; a < newsz; a += PGSIZE){
mem = kalloc();
if(mem == 0){
- uvmdealloc(pagetable, newsz, oldsz);
+ uvmdealloc(pagetable, a, oldsz);
return 0;
}
memset(mem, 0, PGSIZE);