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); |