aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2006-07-16 21:05:58 +0000
committerAlan Cox <alc@FreeBSD.org>2006-07-16 21:05:58 +0000
commitd259662b816406ecf85d137bd1b74ab3783e3304 (patch)
tree09b9ea4e0111e8df0ac1e5c48088342b372d3f81 /sys
parent80da51effccda7797129c019a80243e30385c828 (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/i386/i386/pmap.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index ed76cb998735..e28069907fa5 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -3150,7 +3150,6 @@ pmap_ts_referenced(vm_page_t m)
pv_entry_t pv, pvf, pvn;
pmap_t pmap;
pt_entry_t *pte;
- pt_entry_t v;
int rtval = 0;
if (m->flags & PG_FICTITIOUS)
@@ -3166,14 +3165,12 @@ pmap_ts_referenced(vm_page_t m)
pmap = PV_PMAP(pv);
PMAP_LOCK(pmap);
pte = pmap_pte_quick(pmap, pv->pv_va);
- if (pte && ((v = pte_load(pte)) & PG_A) != 0) {
+ if ((*pte & PG_A) != 0) {
atomic_clear_int((u_int *)pte, PG_A);
pmap_invalidate_page(pmap, pv->pv_va);
rtval++;
- if (rtval > 4) {
- PMAP_UNLOCK(pmap);
- break;
- }
+ if (rtval > 4)
+ pvn = NULL;
}
PMAP_UNLOCK(pmap);
} while ((pv = pvn) != NULL && pv != pvf);