Changes in kernel/arch/ia64/src/mm/tlb.c [9aed144:0ff03f3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/mm/tlb.c
r9aed144 r0ff03f3 480 480 va = istate->cr_ifa; /* faulting address */ 481 481 482 page_table_lock(AS, true); 482 483 t = page_mapping_find(AS, va, true); 483 484 if (t) { … … 487 488 */ 488 489 itc_pte_copy(t); 490 page_table_unlock(AS, true); 489 491 } else { 490 492 /* 491 493 * Forward the page fault to address space page fault handler. 492 494 */ 495 page_table_unlock(AS, true); 493 496 if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) { 494 497 fault_if_from_uspace(istate, "Page fault at %p.", … … 595 598 596 599 600 page_table_lock(AS, true); 597 601 pte_t *entry = page_mapping_find(AS, va, true); 598 602 if (entry) { … … 602 606 */ 603 607 dtc_pte_copy(entry); 608 page_table_unlock(AS, true); 604 609 } else { 610 page_table_unlock(AS, true); 605 611 if (try_memmap_io_insertion(va, istate)) 606 612 return; … … 644 650 va = istate->cr_ifa; /* faulting address */ 645 651 652 page_table_lock(AS, true); 646 653 t = page_mapping_find(AS, va, true); 647 654 ASSERT((t) && (t->p)); … … 660 667 } 661 668 } 669 page_table_unlock(AS, true); 662 670 } 663 671 … … 675 683 va = istate->cr_ifa; /* faulting address */ 676 684 685 page_table_lock(AS, true); 677 686 t = page_mapping_find(AS, va, true); 678 687 ASSERT((t) && (t->p)); … … 691 700 } 692 701 } 702 page_table_unlock(AS, true); 693 703 } 694 704 … … 706 716 va = istate->cr_ifa; /* faulting address */ 707 717 718 page_table_lock(AS, true); 708 719 t = page_mapping_find(AS, va, true); 709 720 ASSERT((t) && (t->p)); … … 722 733 } 723 734 } 735 page_table_unlock(AS, true); 724 736 } 725 737 … … 740 752 * Assume a write to a read-only page. 741 753 */ 754 page_table_lock(AS, true); 742 755 t = page_mapping_find(AS, va, true); 743 756 ASSERT((t) && (t->p)); … … 748 761 panic_memtrap(istate, PF_ACCESS_WRITE, va, NULL); 749 762 } 763 page_table_unlock(AS, true); 750 764 } 751 765 … … 763 777 va = istate->cr_ifa; /* faulting address */ 764 778 779 page_table_lock(AS, true); 765 780 t = page_mapping_find(AS, va, true); 766 781 ASSERT(t); … … 775 790 else 776 791 dtc_pte_copy(t); 792 page_table_unlock(AS, true); 777 793 } else { 794 page_table_unlock(AS, true); 778 795 if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) { 779 796 fault_if_from_uspace(istate, "Page fault at %p.",
Note:
See TracChangeset
for help on using the changeset viewer.