Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/mm/as.c

    rc964521 r1624aae  
    422422                 * No need to check for overlaps.
    423423                 */
    424 
    425                 page_table_lock(as, false);
    426424
    427425                /*
     
    488486                                        pte_t *pte;
    489487                       
     488                                        page_table_lock(as, false);
    490489                                        pte = page_mapping_find(as, b +
    491490                                            i * PAGE_SIZE);
     
    500499                                        page_mapping_remove(as, b +
    501500                                            i * PAGE_SIZE);
     501                                        page_table_unlock(as, false);
    502502                                }
    503503                        }
     
    510510                tlb_invalidate_pages(as->asid, area->base + pages * PAGE_SIZE,
    511511                    area->pages - pages);
    512 
    513512                /*
    514513                 * Invalidate software translation caches (e.g. TSB on sparc64).
     
    517516                    pages * PAGE_SIZE, area->pages - pages);
    518517                tlb_shootdown_finalize();
    519 
    520                 page_table_unlock(as, false);
    521518               
    522519        } else {
     
    568565
    569566        base = area->base;
    570 
    571         page_table_lock(as, false);
    572567
    573568        /*
     
    591586                       
    592587                        for (j = 0; j < (size_t) node->value[i]; j++) {
     588                                page_table_lock(as, false);
    593589                                pte = page_mapping_find(as, b + j * PAGE_SIZE);
    594590                                ASSERT(pte && PTE_VALID(pte) &&
     
    600596                                }
    601597                                page_mapping_remove(as, b + j * PAGE_SIZE);                             
     598                                page_table_unlock(as, false);
    602599                        }
    603600                }
     
    609606
    610607        tlb_invalidate_pages(as->asid, area->base, area->pages);
    611 
    612608        /*
    613609         * Invalidate potential software translation caches (e.g. TSB on
     
    616612        as_invalidate_translation_cache(as, area->base, area->pages);
    617613        tlb_shootdown_finalize();
    618 
    619         page_table_unlock(as, false);
    620614       
    621615        btree_destroy(&area->used_space);
     
    864858        old_frame = malloc(used_pages * sizeof(uintptr_t), 0);
    865859
    866         page_table_lock(as, false);
    867 
    868860        /*
    869861         * Start TLB shootdown sequence.
     
    889881                       
    890882                        for (j = 0; j < (size_t) node->value[i]; j++) {
     883                                page_table_lock(as, false);
    891884                                pte = page_mapping_find(as, b + j * PAGE_SIZE);
    892885                                ASSERT(pte && PTE_VALID(pte) &&
     
    896889                                /* Remove old mapping */
    897890                                page_mapping_remove(as, b + j * PAGE_SIZE);
     891                                page_table_unlock(as, false);
    898892                        }
    899893                }
     
    912906        as_invalidate_translation_cache(as, area->base, area->pages);
    913907        tlb_shootdown_finalize();
    914 
    915         page_table_unlock(as, false);
    916908
    917909        /*
Note: See TracChangeset for help on using the changeset viewer.