Changeset 7cb567cd in mainline for kernel/arch/ia32/src/mm/page.c
- Timestamp:
- 2007-04-08T20:52:53Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e5dbbe5
- Parents:
- 328f324b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/mm/page.c
r328f324b r7cb567cd 62 62 */ 63 63 for (cur = 0; cur < last_frame; cur += FRAME_SIZE) { 64 flags = PAGE_CACHEABLE ;64 flags = PAGE_CACHEABLE | PAGE_WRITE; 65 65 if ((PA2KA(cur) >= config.base) && (PA2KA(cur) < config.base + config.kernel_size)) 66 66 flags |= PAGE_GLOBAL; … … 70 70 exc_register(14, "page_fault", (iroutine) page_fault); 71 71 write_cr3((uintptr_t) AS_KERNEL->genarch.page_table); 72 } 73 else { 72 } else 74 73 write_cr3((uintptr_t) AS_KERNEL->genarch.page_table); 75 }76 74 77 75 paging_on(); … … 87 85 pfn_t i; 88 86 for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) 89 page_mapping_insert(AS_KERNEL, virtaddr + PFN2ADDR(i), physaddr + PFN2ADDR(i), PAGE_NOT_CACHEABLE );87 page_mapping_insert(AS_KERNEL, virtaddr + PFN2ADDR(i), physaddr + PFN2ADDR(i), PAGE_NOT_CACHEABLE | PAGE_WRITE); 90 88 91 89 last_frame = ALIGN_UP(last_frame + size, FRAME_SIZE); … … 96 94 void page_fault(int n, istate_t *istate) 97 95 { 98 96 uintptr_t page; 99 97 pf_access_t access; 100 98 101 99 page = read_cr2(); 102 100 103 101 if (istate->error_word & PFERR_CODE_RSVD) 104 102 panic("Reserved bit set in page directory.\n"); 105 103 … … 108 106 else 109 107 access = PF_ACCESS_READ; 110 111 108 109 if (as_page_fault(page, access, istate) == AS_PF_FAULT) { 112 110 fault_if_from_uspace(istate, "Page fault: %#x", page); 113 114 115 116 117 111 112 decode_istate(istate); 113 printf("page fault address: %#x\n", page); 114 panic("page fault\n"); 115 } 118 116 } 119 117
Note:
See TracChangeset
for help on using the changeset viewer.