Changeset b2fa2d86 in mainline for kernel/arch
- Timestamp:
- 2013-03-26T15:06:35Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ea15a89a
- Parents:
- 8a26f82 (diff), 5c4356b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- kernel/arch
- Files:
-
- 5 edited
-
amd64/src/mm/page.c (modified) (2 diffs)
-
arm32/src/fpu_context.c (modified) (1 diff)
-
ia32/src/mm/page.c (modified) (2 diffs)
-
mips32/src/mm/tlb.c (modified) (8 diffs)
-
sparc64/src/mm/sun4u/tlb.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/src/mm/page.c
r8a26f82 rb2fa2d86 78 78 void page_fault(unsigned int n, istate_t *istate) 79 79 { 80 uintptr_t page= read_cr2();80 uintptr_t badvaddr = read_cr2(); 81 81 82 82 if (istate->error_word & PFERR_CODE_RSVD) … … 92 92 access = PF_ACCESS_READ; 93 93 94 as_page_fault(page, access, istate);94 (void) as_page_fault(badvaddr, access, istate); 95 95 } 96 96 -
kernel/arch/arm32/src/fpu_context.c
r8a26f82 rb2fa2d86 119 119 * rely on user decision to use CONFIG_FPU. 120 120 */ 121 #ifdef PROCESSOR_ARC _armv7_a121 #ifdef PROCESSOR_ARCH_armv7_a 122 122 const uint32_t cpacr = CPACR_read(); 123 123 /* FPU needs access to coprocessor 10 and 11. 124 * Moreover they need to have same access enabled d*/124 * Moreover they need to have same access enabled */ 125 125 if (((cpacr & CPACR_CP_MASK(10)) != CPACR_CP_FULL_ACCESS(10)) && 126 126 ((cpacr & CPACR_CP_MASK(11)) != CPACR_CP_FULL_ACCESS(11))) { -
kernel/arch/ia32/src/mm/page.c
r8a26f82 rb2fa2d86 84 84 void page_fault(unsigned int n __attribute__((unused)), istate_t *istate) 85 85 { 86 uintptr_t page;86 uintptr_t badvaddr; 87 87 pf_access_t access; 88 88 89 page= read_cr2();89 badvaddr = read_cr2(); 90 90 91 91 if (istate->error_word & PFERR_CODE_RSVD) … … 97 97 access = PF_ACCESS_READ; 98 98 99 if (as_page_fault(page, access, istate) == AS_PF_FAULT) { 100 fault_if_from_uspace(istate, "Page fault: %#x.", page); 101 panic_memtrap(istate, access, page, NULL); 102 } 99 (void) as_page_fault(badvaddr, access, istate); 103 100 } 104 101 -
kernel/arch/mips32/src/mm/tlb.c
r8a26f82 rb2fa2d86 94 94 entry_lo_t lo; 95 95 uintptr_t badvaddr; 96 uintptr_t page;97 96 pte_t *pte; 98 97 99 98 badvaddr = cp0_badvaddr_read(); 100 page = ALIGN_DOWN(badvaddr, PAGE_SIZE); 101 102 pte = page_mapping_find(AS, page, true); 99 100 pte = page_mapping_find(AS, badvaddr, true); 103 101 if (pte && pte->p) { 104 102 /* … … 125 123 } 126 124 127 (void) as_page_fault( page, PF_ACCESS_READ, istate);125 (void) as_page_fault(badvaddr, PF_ACCESS_READ, istate); 128 126 } 129 127 … … 137 135 tlb_index_t index; 138 136 uintptr_t badvaddr; 139 uintptr_t page;140 137 pte_t *pte; 141 138 … … 161 158 162 159 badvaddr = cp0_badvaddr_read(); 163 page = ALIGN_DOWN(badvaddr, PAGE_SIZE); 164 165 pte = page_mapping_find(AS, page, true); 160 161 pte = page_mapping_find(AS, badvaddr, true); 166 162 if (pte && pte->p) { 167 163 /* … … 189 185 } 190 186 191 (void) as_page_fault( page, PF_ACCESS_READ, istate);187 (void) as_page_fault(badvaddr, PF_ACCESS_READ, istate); 192 188 } 193 189 … … 201 197 tlb_index_t index; 202 198 uintptr_t badvaddr; 203 uintptr_t page;204 199 pte_t *pte; 205 200 206 201 badvaddr = cp0_badvaddr_read(); 207 page = ALIGN_DOWN(badvaddr, PAGE_SIZE);208 202 209 203 /* … … 227 221 } 228 222 229 pte = page_mapping_find(AS, page, true);223 pte = page_mapping_find(AS, badvaddr, true); 230 224 if (pte && pte->p && pte->w) { 231 225 /* … … 254 248 } 255 249 256 (void) as_page_fault( page, PF_ACCESS_WRITE, istate);250 (void) as_page_fault(badvaddr, PF_ACCESS_WRITE, istate); 257 251 } 258 252 -
kernel/arch/sparc64/src/mm/sun4u/tlb.c
r8a26f82 rb2fa2d86 196 196 void fast_instruction_access_mmu_miss(sysarg_t unused, istate_t *istate) 197 197 { 198 uintptr_t page_16k = ALIGN_DOWN(istate->tpc, PAGE_SIZE);199 198 size_t index = (istate->tpc >> MMU_PAGE_WIDTH) % MMU_PAGES_PER_PAGE; 200 199 pte_t *t; 201 200 202 t = page_mapping_find(AS, page_16k, true);201 t = page_mapping_find(AS, istate->tpc, true); 203 202 if (t && PTE_EXECUTABLE(t)) { 204 203 /* … … 216 215 * handler. 217 216 */ 218 as_page_fault( page_16k, PF_ACCESS_EXEC, istate);217 as_page_fault(istate->tpc, PF_ACCESS_EXEC, istate); 219 218 } 220 219 }
Note:
See TracChangeset
for help on using the changeset viewer.
