Changeset 2299914 in mainline for arch/ia64


Ignore:
Timestamp:
2006-03-16T12:57:31Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e898a8d7
Parents:
b7dcabb
Message:

Page table locking.

File:
1 edited

Legend:

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

    rb7dcabb r2299914  
    424424       
    425425        va = istate->cr_ifa;    /* faulting address */
     426        page_table_lock(AS, true);
    426427        t = page_mapping_find(AS, va);
    427428        if (t) {
     
    431432                 */
    432433                itc_pte_copy(t);
     434                page_table_unlock(AS, true);
    433435        } else {
    434436                /*
    435437                 * Forward the page fault to address space page fault handler.
    436438                 */
     439                page_table_unlock(AS, true);
    437440                if (!as_page_fault(va)) {
     441                        page_table_unlock(AS, true);
    438442                        panic("%s: va=%P, rid=%d\n", __FUNCTION__, istate->cr_ifa, rr.map.rid);
    439443                }
     
    467471        }
    468472
     473        page_table_lock(AS, true);
    469474        t = page_mapping_find(AS, va);
    470475        if (t) {
     
    474479                 */
    475480                dtc_pte_copy(t);
     481                page_table_unlock(AS, true);
    476482        } else {
    477483                /*
    478484                 * Forward the page fault to address space page fault handler.
    479485                 */
     486                page_table_unlock(AS, true);
    480487                if (!as_page_fault(va)) {
    481488                        panic("%s: va=%P, rid=%d, iip=%P\n", __FUNCTION__, va, rid, istate->cr_iip);
     
    505512        pte_t *t;
    506513
     514        page_table_lock(AS, true);
    507515        t = page_mapping_find(AS, istate->cr_ifa);
    508516        ASSERT(t && t->p);
     
    515523                dtc_pte_copy(t);
    516524        }
     525        page_table_unlock(AS, true);
    517526}
    518527
     
    526535        pte_t *t;
    527536
     537        page_table_lock(AS, true);
    528538        t = page_mapping_find(AS, istate->cr_ifa);
    529539        ASSERT(t && t->p);
     
    536546                itc_pte_copy(t);
    537547        }
     548        page_table_unlock(AS, true);
    538549}
    539550
     
    547558        pte_t *t;
    548559
     560        page_table_lock(AS, true);
    549561        t = page_mapping_find(AS, istate->cr_ifa);
    550562        ASSERT(t && t->p);
     
    557569                dtc_pte_copy(t);
    558570        }
     571        page_table_unlock(AS, true);
    559572}
    560573
     
    571584       
    572585        va = istate->cr_ifa;    /* faulting address */
     586        page_table_lock(AS, true);
    573587        t = page_mapping_find(AS, va);
    574588        ASSERT(t);
     
    583597                else
    584598                        dtc_pte_copy(t);
     599                page_table_unlock(AS, true);
    585600        } else {
     601                page_table_unlock(AS, true);
    586602                if (!as_page_fault(va)) {
    587603                        panic("%s: va=%P, rid=%d\n", __FUNCTION__, va, rr.map.rid);
Note: See TracChangeset for help on using the changeset viewer.