X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fuserprog%2Fpagedir.c;h=820755ff7ce27911fa67e2926409a1e3f9bde507;hb=e82703f6476952b17bf858801134c0cc9c38cab4;hp=4604ca2ddf94b24e97f31fbd5d553b06ab3ff7c1;hpb=4ebf33908a571a7cde93fe618902b044e3633cdf;p=pintos-anon diff --git a/src/userprog/pagedir.c b/src/userprog/pagedir.c index 4604ca2..820755f 100644 --- a/src/userprog/pagedir.c +++ b/src/userprog/pagedir.c @@ -88,6 +88,8 @@ lookup_page (uint32_t *pd, const void *vaddr, bool create) /* Adds a mapping from user virtual page UPAGE to kernel virtual address KPAGE in page directory PD. UPAGE must not already be mapped. + KPAGE should probably be a page obtained from the user pool + with palloc_get_page(). If WRITABLE is true, the new page is read/write; otherwise it is read-only. Returns true if successful, false if memory allocation @@ -223,7 +225,7 @@ pagedir_activate (uint32_t *pd) aka PDBR (page directory base register). This activates our new page tables immediately. See [IA32-v2a] "MOV--Move to/from Control Registers" and [IA32-v3] 3.7.5. */ - asm volatile ("mov %%cr3, %0" :: "r" (vtop (pd))); + asm volatile ("movl %0, %%cr3" :: "r" (vtop (pd))); } /* Returns the currently active page directory. */ @@ -235,7 +237,7 @@ active_pd (void) See [IA32-v2a] "MOV--Move to/from Control Registers" and [IA32-v3] 3.7.5. */ uintptr_t pd; - asm volatile ("mov %0, %%cr3" : "=r" (pd)); + asm volatile ("movl %%cr3, %0" : "=r" (pd)); return ptov (pd); }