Changeset 9aed144 in mainline
- Timestamp:
- 2011-11-25T23:35:22Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1c01e6c
- Parents:
- 50177dcd
- Location:
- kernel/arch
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/mm/tlb.c
r50177dcd r9aed144 480 480 va = istate->cr_ifa; /* faulting address */ 481 481 482 page_table_lock(AS, true);483 482 t = page_mapping_find(AS, va, true); 484 483 if (t) { … … 488 487 */ 489 488 itc_pte_copy(t); 490 page_table_unlock(AS, true);491 489 } else { 492 490 /* 493 491 * Forward the page fault to address space page fault handler. 494 492 */ 495 page_table_unlock(AS, true);496 493 if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) { 497 494 fault_if_from_uspace(istate, "Page fault at %p.", … … 598 595 599 596 600 page_table_lock(AS, true);601 597 pte_t *entry = page_mapping_find(AS, va, true); 602 598 if (entry) { … … 606 602 */ 607 603 dtc_pte_copy(entry); 608 page_table_unlock(AS, true);609 604 } else { 610 page_table_unlock(AS, true);611 605 if (try_memmap_io_insertion(va, istate)) 612 606 return; … … 650 644 va = istate->cr_ifa; /* faulting address */ 651 645 652 page_table_lock(AS, true);653 646 t = page_mapping_find(AS, va, true); 654 647 ASSERT((t) && (t->p)); … … 667 660 } 668 661 } 669 page_table_unlock(AS, true);670 662 } 671 663 … … 683 675 va = istate->cr_ifa; /* faulting address */ 684 676 685 page_table_lock(AS, true);686 677 t = page_mapping_find(AS, va, true); 687 678 ASSERT((t) && (t->p)); … … 700 691 } 701 692 } 702 page_table_unlock(AS, true);703 693 } 704 694 … … 716 706 va = istate->cr_ifa; /* faulting address */ 717 707 718 page_table_lock(AS, true);719 708 t = page_mapping_find(AS, va, true); 720 709 ASSERT((t) && (t->p)); … … 733 722 } 734 723 } 735 page_table_unlock(AS, true);736 724 } 737 725 … … 752 740 * Assume a write to a read-only page. 753 741 */ 754 page_table_lock(AS, true);755 742 t = page_mapping_find(AS, va, true); 756 743 ASSERT((t) && (t->p)); … … 761 748 panic_memtrap(istate, PF_ACCESS_WRITE, va, NULL); 762 749 } 763 page_table_unlock(AS, true);764 750 } 765 751 … … 777 763 va = istate->cr_ifa; /* faulting address */ 778 764 779 page_table_lock(AS, true);780 765 t = page_mapping_find(AS, va, true); 781 766 ASSERT(t); … … 790 775 else 791 776 dtc_pte_copy(t); 792 page_table_unlock(AS, true);793 777 } else { 794 page_table_unlock(AS, true);795 778 if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) { 796 779 fault_if_from_uspace(istate, "Page fault at %p.", -
kernel/arch/sparc64/src/mm/sun4u/tlb.c
r50177dcd r9aed144 206 206 pte_t *t; 207 207 208 page_table_lock(AS, true);209 208 t = page_mapping_find(AS, page_16k, true); 210 209 if (t && PTE_EXECUTABLE(t)) { … … 218 217 itsb_pte_copy(t, index); 219 218 #endif 220 page_table_unlock(AS, true);221 219 } else { 222 220 /* … … 224 222 * handler. 225 223 */ 226 page_table_unlock(AS, true);227 224 if (as_page_fault(page_16k, PF_ACCESS_EXEC, istate) == 228 225 AS_PF_FAULT) { … … 274 271 } 275 272 276 page_table_lock(AS, true);277 273 t = page_mapping_find(AS, page_16k, true); 278 274 if (t) { … … 286 282 dtsb_pte_copy(t, index, true); 287 283 #endif 288 page_table_unlock(AS, true);289 284 } else { 290 285 /* … … 292 287 * handler. 293 288 */ 294 page_table_unlock(AS, true);295 289 if (as_page_fault(page_16k, PF_ACCESS_READ, istate) == 296 290 AS_PF_FAULT) { … … 318 312 index = tag.vpn % MMU_PAGES_PER_PAGE; /* 16K-page emulation */ 319 313 320 page_table_lock(AS, true);321 314 t = page_mapping_find(AS, page_16k, true); 322 315 if (t && PTE_WRITABLE(t)) { … … 334 327 dtsb_pte_copy(t, index, false); 335 328 #endif 336 page_table_unlock(AS, true);337 329 } else { 338 330 /* … … 340 332 * handler. 341 333 */ 342 page_table_unlock(AS, true);343 334 if (as_page_fault(page_16k, PF_ACCESS_WRITE, istate) == 344 335 AS_PF_FAULT) { -
kernel/arch/sparc64/src/mm/sun4v/tlb.c
r50177dcd r9aed144 218 218 pte_t *t; 219 219 220 page_table_lock(AS, true);221 220 t = page_mapping_find(AS, va, true); 222 221 … … 231 230 itsb_pte_copy(t); 232 231 #endif 233 page_table_unlock(AS, true);234 232 } else { 235 233 /* … … 237 235 * handler. 238 236 */ 239 page_table_unlock(AS, true);240 237 if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) { 241 238 do_fast_instruction_access_mmu_miss_fault(istate, … … 274 271 } 275 272 276 page_table_lock(AS, true);277 273 t = page_mapping_find(AS, va, true); 278 274 if (t) { … … 286 282 dtsb_pte_copy(t, true); 287 283 #endif 288 page_table_unlock(AS, true);289 284 } else { 290 285 /* … … 292 287 * handler. 293 288 */ 294 page_table_unlock(AS, true);295 289 if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) { 296 290 do_fast_data_access_mmu_miss_fault(istate, page_and_ctx, … … 316 310 uint16_t ctx = DMISS_CONTEXT(page_and_ctx); 317 311 318 page_table_lock(AS, true);319 312 t = page_mapping_find(AS, va, true); 320 313 if (t && PTE_WRITABLE(t)) { … … 331 324 dtsb_pte_copy(t, false); 332 325 #endif 333 page_table_unlock(AS, true);334 326 } else { 335 327 /* … … 337 329 * handler. 338 330 */ 339 page_table_unlock(AS, true);340 331 if (as_page_fault(va, PF_ACCESS_WRITE, istate) == AS_PF_FAULT) { 341 332 do_fast_data_access_protection_fault(istate, page_and_ctx,
Note:
See TracChangeset
for help on using the changeset viewer.