Changes in kernel/arch/ia32/src/mm/page.c [c15b374:d99c1d2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/mm/page.c
rc15b374 rd99c1d2 61 61 * PA2KA(identity) mapping for all frames until last_frame. 62 62 */ 63 page_table_lock(AS_KERNEL, true);64 63 for (cur = 0; cur < last_frame; cur += FRAME_SIZE) { 65 64 flags = PAGE_CACHEABLE | PAGE_WRITE; … … 68 67 page_mapping_insert(AS_KERNEL, PA2KA(cur), cur, flags); 69 68 } 70 page_table_unlock(AS_KERNEL, true);71 69 72 exc_register(14, "page_fault", true, (iroutine_t) page_fault);70 exc_register(14, "page_fault", (iroutine) page_fault); 73 71 write_cr3((uintptr_t) AS_KERNEL->genarch.page_table); 74 72 } else … … 86 84 uintptr_t virtaddr = PA2KA(last_frame); 87 85 pfn_t i; 88 page_table_lock(AS_KERNEL, true);89 86 for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) { 90 87 uintptr_t addr = PFN2ADDR(i); 91 88 page_mapping_insert(AS_KERNEL, virtaddr + addr, physaddr + addr, PAGE_NOT_CACHEABLE | PAGE_WRITE); 92 89 } 93 page_table_unlock(AS_KERNEL, true);94 90 95 91 last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE); … … 98 94 } 99 95 100 void page_fault( unsignedint n __attribute__((unused)), istate_t *istate)96 void page_fault(int n __attribute__((unused)), istate_t *istate) 101 97 { 102 98 uintptr_t page; … … 115 111 if (as_page_fault(page, access, istate) == AS_PF_FAULT) { 116 112 fault_if_from_uspace(istate, "Page fault: %#x.", page); 117 panic_memtrap(istate, access, page, NULL); 113 114 decode_istate(istate); 115 printf("page fault address: %#lx\n", page); 116 panic("Page fault."); 118 117 } 119 118 }
Note:
See TracChangeset
for help on using the changeset viewer.