aboutsummaryrefslogtreecommitdiff
path: root/sys/arm
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2004-07-13 02:49:22 +0000
committerAlan Cox <alc@FreeBSD.org>2004-07-13 02:49:22 +0000
commitce8da3091fbcb3f236d0523c8fd5a66262d63164 (patch)
tree6940f183ade6a21c79f62549b14a7c432d9a255a /sys/arm
parentb0c2b9254873e537d7a5069e6f7e55a7a8ee221e (diff)
downloadsrc-ce8da3091fbcb3f236d0523c8fd5a66262d63164.tar.gz
src-ce8da3091fbcb3f236d0523c8fd5a66262d63164.zip
Push down the acquisition and release of the page queues lock into
pmap_remove_pages(). (The implementation of pmap_remove_pages() is optional. If pmap_remove_pages() is unimplemented, the acquisition and release of the page queues lock is unnecessary.) Remove spl calls from the alpha, arm, and ia64 pmap_remove_pages().
Notes
Notes: svn path=/head/; revision=132082
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/arm/pmap.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/arm/arm/pmap.c b/sys/arm/arm/pmap.c
index 1cb35b6ba1a2..77d5279b1e33 100644
--- a/sys/arm/arm/pmap.c
+++ b/sys/arm/arm/pmap.c
@@ -2620,7 +2620,6 @@ pmap_remove_pages(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
struct l2_bucket *l2b;
pt_entry_t *pte, tpte;
pv_entry_t pv, npv;
- int s;
vm_page_t m;
#ifdef PMAP_REMOVE_PAGES_CURPROC_ONLY
@@ -2630,7 +2629,7 @@ pmap_remove_pages(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
}
#endif
- s = splvm();
+ vm_page_lock_queues();
for(pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) {
if (pv->pv_va >= eva || pv->pv_va < sva) {
npv = TAILQ_NEXT(pv, pv_plist);
@@ -2675,8 +2674,8 @@ pmap_remove_pages(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)
pmap_unuse_pt(pv->pv_pmap, pv->pv_va, pv->pv_ptem);
pmap_free_pv_entry(pv);
}
- splx(s);
pmap_invalidate_tlb_all(pmap);
+ vm_page_unlock_queues();
}