Changeset c964521 in mainline
- Timestamp:
- 2010-05-13T09:44:07Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ba4a63b8
- Parents:
- 2e4e706
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/mm/as.c
r2e4e706 rc964521 422 422 * No need to check for overlaps. 423 423 */ 424 425 page_table_lock(as, false); 424 426 425 427 /* … … 486 488 pte_t *pte; 487 489 488 page_table_lock(as, false);489 490 pte = page_mapping_find(as, b + 490 491 i * PAGE_SIZE); … … 499 500 page_mapping_remove(as, b + 500 501 i * PAGE_SIZE); 501 page_table_unlock(as, false);502 502 } 503 503 } … … 510 510 tlb_invalidate_pages(as->asid, area->base + pages * PAGE_SIZE, 511 511 area->pages - pages); 512 512 513 /* 513 514 * Invalidate software translation caches (e.g. TSB on sparc64). … … 516 517 pages * PAGE_SIZE, area->pages - pages); 517 518 tlb_shootdown_finalize(); 519 520 page_table_unlock(as, false); 518 521 519 522 } else { … … 565 568 566 569 base = area->base; 570 571 page_table_lock(as, false); 567 572 568 573 /* … … 586 591 587 592 for (j = 0; j < (size_t) node->value[i]; j++) { 588 page_table_lock(as, false);589 593 pte = page_mapping_find(as, b + j * PAGE_SIZE); 590 594 ASSERT(pte && PTE_VALID(pte) && … … 596 600 } 597 601 page_mapping_remove(as, b + j * PAGE_SIZE); 598 page_table_unlock(as, false);599 602 } 600 603 } … … 606 609 607 610 tlb_invalidate_pages(as->asid, area->base, area->pages); 611 608 612 /* 609 613 * Invalidate potential software translation caches (e.g. TSB on … … 612 616 as_invalidate_translation_cache(as, area->base, area->pages); 613 617 tlb_shootdown_finalize(); 618 619 page_table_unlock(as, false); 614 620 615 621 btree_destroy(&area->used_space); … … 858 864 old_frame = malloc(used_pages * sizeof(uintptr_t), 0); 859 865 866 page_table_lock(as, false); 867 860 868 /* 861 869 * Start TLB shootdown sequence. … … 881 889 882 890 for (j = 0; j < (size_t) node->value[i]; j++) { 883 page_table_lock(as, false);884 891 pte = page_mapping_find(as, b + j * PAGE_SIZE); 885 892 ASSERT(pte && PTE_VALID(pte) && … … 889 896 /* Remove old mapping */ 890 897 page_mapping_remove(as, b + j * PAGE_SIZE); 891 page_table_unlock(as, false);892 898 } 893 899 } … … 906 912 as_invalidate_translation_cache(as, area->base, area->pages); 907 913 tlb_shootdown_finalize(); 914 915 page_table_unlock(as, false); 908 916 909 917 /*
Note:
See TracChangeset
for help on using the changeset viewer.