Subversion Repositories HelenOS

Rev

Rev 1850 | Rev 2071 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1850 Rev 1851
Line 504... Line 504...
504
 
504
 
505
    page_table_lock(AS, true);
505
    page_table_lock(AS, true);
506
    t = page_mapping_find(AS, va);
506
    t = page_mapping_find(AS, va);
507
    if (t) {
507
    if (t) {
508
        /*
508
        /*
509
         * The mapping was found in software page hash table.
509
         * The mapping was found in the software page hash table.
510
         * Insert it into data translation cache.
510
         * Insert it into data translation cache.
511
         */
511
         */
512
        dtc_pte_copy(t);
512
        dtc_pte_copy(t);
513
        page_table_unlock(AS, true);
513
        page_table_unlock(AS, true);
514
    } else {
514
    } else {
515
        /*
515
        /*
516
         * Forward the page fault to address space page fault handler.
516
         * Forward the page fault to the address space page fault handler.
517
         */
517
         */
518
        page_table_unlock(AS, true);
518
        page_table_unlock(AS, true);
519
        if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
519
        if (as_page_fault(va, PF_ACCESS_READ, istate) == AS_PF_FAULT) {
520
            fault_if_from_uspace(istate,"Page fault at %p",va);
520
            fault_if_from_uspace(istate,"Page fault at %p",va);
521
            panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);
521
            panic("%s: va=%p, rid=%d, iip=%p\n", __FUNCTION__, va, rid, istate->cr_iip);