Changes in kernel/arch/ia64/src/mm/tlb.c [346b12a2:9928240] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/mm/tlb.c
r346b12a2 r9928240 484 484 { 485 485 uintptr_t va; 486 pte_t t;486 pte_t *t; 487 487 488 488 va = istate->cr_ifa; /* faulting address */ … … 490 490 ASSERT(!is_kernel_fault(va)); 491 491 492 bool found = page_mapping_find(AS, va, true, &t);493 if ( found) {492 t = page_mapping_find(AS, va, true); 493 if (t) { 494 494 /* 495 495 * The mapping was found in software page hash table. 496 496 * Insert it into data translation cache. 497 497 */ 498 itc_pte_copy( &t);498 itc_pte_copy(t); 499 499 } else { 500 500 /* … … 600 600 601 601 602 pte_t t; 603 bool found = page_mapping_find(as, va, true, &t); 604 if (found) { 602 pte_t *entry = page_mapping_find(as, va, true); 603 if (entry) { 605 604 /* 606 605 * The mapping was found in the software page hash table. 607 606 * Insert it into data translation cache. 608 607 */ 609 dtc_pte_copy( &t);608 dtc_pte_copy(entry); 610 609 } else { 611 610 if (try_memmap_io_insertion(va, istate)) … … 642 641 { 643 642 uintptr_t va; 644 pte_t t;643 pte_t *t; 645 644 as_t *as = AS; 646 645 … … 650 649 as = AS_KERNEL; 651 650 652 bool found = page_mapping_find(as, va, true, &t); 653 654 ASSERT(found); 655 ASSERT(t.p); 656 657 if (found && t.p && t.w) { 651 t = page_mapping_find(as, va, true); 652 ASSERT((t) && (t->p)); 653 if ((t) && (t->p) && (t->w)) { 658 654 /* 659 655 * Update the Dirty bit in page tables and reinsert 660 656 * the mapping into DTC. 661 657 */ 662 t.d = true; 663 dtc_pte_copy(&t); 664 page_mapping_update(as, va, true, &t); 658 t->d = true; 659 dtc_pte_copy(t); 665 660 } else { 666 661 as_page_fault(va, PF_ACCESS_WRITE, istate); … … 677 672 { 678 673 uintptr_t va; 679 pte_t t;674 pte_t *t; 680 675 681 676 va = istate->cr_ifa; /* faulting address */ … … 683 678 ASSERT(!is_kernel_fault(va)); 684 679 685 bool found = page_mapping_find(AS, va, true, &t); 686 687 ASSERT(found); 688 ASSERT(t.p); 689 690 if (found && t.p && t.x) { 680 t = page_mapping_find(AS, va, true); 681 ASSERT((t) && (t->p)); 682 if ((t) && (t->p) && (t->x)) { 691 683 /* 692 684 * Update the Accessed bit in page tables and reinsert 693 685 * the mapping into ITC. 694 686 */ 695 t.a = true; 696 itc_pte_copy(&t); 697 page_mapping_update(AS, va, true, &t); 687 t->a = true; 688 itc_pte_copy(t); 698 689 } else { 699 690 as_page_fault(va, PF_ACCESS_EXEC, istate); … … 710 701 { 711 702 uintptr_t va; 712 pte_t t;703 pte_t *t; 713 704 as_t *as = AS; 714 705 … … 718 709 as = AS_KERNEL; 719 710 720 bool found = page_mapping_find(as, va, true, &t); 721 722 ASSERT(found); 723 ASSERT(t.p); 724 725 if (found && t.p) { 711 t = page_mapping_find(as, va, true); 712 ASSERT((t) && (t->p)); 713 if ((t) && (t->p)) { 726 714 /* 727 715 * Update the Accessed bit in page tables and reinsert 728 716 * the mapping into DTC. 729 717 */ 730 t.a = true; 731 dtc_pte_copy(&t); 732 page_mapping_update(as, va, true, &t); 718 t->a = true; 719 dtc_pte_copy(t); 733 720 } else { 734 721 if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) { … … 749 736 { 750 737 uintptr_t va; 751 pte_t t;738 pte_t *t; 752 739 753 740 va = istate->cr_ifa; /* faulting address */ … … 758 745 * Assume a write to a read-only page. 759 746 */ 760 bool found = page_mapping_find(AS, va, true, &t); 761 762 ASSERT(found); 763 ASSERT(t.p); 764 ASSERT(!t.w); 765 747 t = page_mapping_find(AS, va, true); 748 ASSERT((t) && (t->p)); 749 ASSERT(!t->w); 766 750 as_page_fault(va, PF_ACCESS_WRITE, istate); 767 751 } … … 776 760 { 777 761 uintptr_t va; 778 pte_t t;762 pte_t *t; 779 763 780 764 va = istate->cr_ifa; /* faulting address */ … … 782 766 ASSERT(!is_kernel_fault(va)); 783 767 784 bool found = page_mapping_find(AS, va, true, &t); 785 786 ASSERT(found); 787 788 if (t.p) { 768 t = page_mapping_find(AS, va, true); 769 ASSERT(t); 770 771 if (t->p) { 789 772 /* 790 773 * If the Present bit is set in page hash table, just copy it 791 774 * and update ITC/DTC. 792 775 */ 793 if (t .x)794 itc_pte_copy( &t);776 if (t->x) 777 itc_pte_copy(t); 795 778 else 796 dtc_pte_copy( &t);779 dtc_pte_copy(t); 797 780 } else { 798 781 as_page_fault(va, PF_ACCESS_READ, istate);
Note:
See TracChangeset
for help on using the changeset viewer.