Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/tlb.c

    rf72c2f5 rc15b374  
    475475void alternate_instruction_tlb_fault(uint64_t vector, istate_t *istate)
    476476{
     477        region_register_t rr;
     478        rid_t rid;
    477479        uintptr_t va;
    478480        pte_t *t;
    479481       
    480482        va = istate->cr_ifa; /* faulting address */
     483        rr.word = rr_read(VA2VRN(va));
     484        rid = rr.map.rid;
    481485       
    482486        page_table_lock(AS, true);
     
    495499                page_table_unlock(AS, true);
    496500                if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) {
    497                         fault_if_from_uspace(istate, "Page fault at %p.",
    498                             (void *) va);
     501                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    499502                        panic_memtrap(istate, PF_ACCESS_EXEC, va, NULL);
    500503                }
     
    553556                        } else {
    554557                                fault_if_from_uspace(istate,
    555                                     "IO access fault at %p.", (void *) va);
     558                                    "IO access fault at %p.", va);
    556559                        }
    557560                }
     
    617620                 */
    618621                if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
    619                         fault_if_from_uspace(istate, "Page fault at %p.",
    620                             (void *) va);
     622                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    621623                        panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, NULL);
    622624                }
     
    645647void data_dirty_bit_fault(uint64_t vector, istate_t *istate)
    646648{
     649        region_register_t rr;
     650        rid_t rid;
    647651        uintptr_t va;
    648652        pte_t *t;
    649653       
    650654        va = istate->cr_ifa;  /* faulting address */
     655        rr.word = rr_read(VA2VRN(va));
     656        rid = rr.map.rid;
    651657       
    652658        page_table_lock(AS, true);
     
    662668        } else {
    663669                if (as_page_fault(va, PF_ACCESS_WRITE, istate) == AS_PF_FAULT) {
    664                         fault_if_from_uspace(istate, "Page fault at %p.",
    665                             (void *) va);
     670                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    666671                        panic_memtrap(istate, PF_ACCESS_WRITE, va, NULL);
    667672                }
     
    678683void instruction_access_bit_fault(uint64_t vector, istate_t *istate)
    679684{
     685        region_register_t rr;
     686        rid_t rid;
    680687        uintptr_t va;
    681688        pte_t *t;
    682689       
    683690        va = istate->cr_ifa;  /* faulting address */
     691        rr.word = rr_read(VA2VRN(va));
     692        rid = rr.map.rid;
    684693       
    685694        page_table_lock(AS, true);
     
    695704        } else {
    696705                if (as_page_fault(va, PF_ACCESS_EXEC, istate) == AS_PF_FAULT) {
    697                         fault_if_from_uspace(istate, "Page fault at %p.",
    698                             (void *) va);
     706                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    699707                        panic_memtrap(istate, PF_ACCESS_EXEC, va, NULL);
    700708                }
     
    711719void data_access_bit_fault(uint64_t vector, istate_t *istate)
    712720{
     721        region_register_t rr;
     722        rid_t rid;
    713723        uintptr_t va;
    714724        pte_t *t;
    715725       
    716726        va = istate->cr_ifa;  /* faulting address */
     727        rr.word = rr_read(VA2VRN(va));
     728        rid = rr.map.rid;
    717729       
    718730        page_table_lock(AS, true);
     
    728740        } else {
    729741                if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
    730                         fault_if_from_uspace(istate, "Page fault at %p.",
    731                             (void *) va);
     742                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    732743                        panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, NULL);
    733744                }
     
    744755void data_access_rights_fault(uint64_t vector, istate_t *istate)
    745756{
     757        region_register_t rr;
     758        rid_t rid;
    746759        uintptr_t va;
    747760        pte_t *t;
    748761       
    749762        va = istate->cr_ifa;  /* faulting address */
     763        rr.word = rr_read(VA2VRN(va));
     764        rid = rr.map.rid;
    750765       
    751766        /*
     
    757772        ASSERT(!t->w);
    758773        if (as_page_fault(va, PF_ACCESS_WRITE, istate) == AS_PF_FAULT) {
    759                 fault_if_from_uspace(istate, "Page fault at %p.",
    760                     (void *) va);
     774                fault_if_from_uspace(istate, "Page fault at %p.", va);
    761775                panic_memtrap(istate, PF_ACCESS_WRITE, va, NULL);
    762776        }
     
    772786void page_not_present(uint64_t vector, istate_t *istate)
    773787{
     788        region_register_t rr;
     789        rid_t rid;
    774790        uintptr_t va;
    775791        pte_t *t;
    776792       
    777793        va = istate->cr_ifa;  /* faulting address */
     794        rr.word = rr_read(VA2VRN(va));
     795        rid = rr.map.rid;
    778796       
    779797        page_table_lock(AS, true);
     
    794812                page_table_unlock(AS, true);
    795813                if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
    796                         fault_if_from_uspace(istate, "Page fault at %p.",
    797                             (void *) va);
     814                        fault_if_from_uspace(istate, "Page fault at %p.", va);
    798815                        panic_memtrap(istate, PF_ACCESS_UNKNOWN, va, NULL);
    799816                }
Note: See TracChangeset for help on using the changeset viewer.