diff options
| author | Alan Cox <alc@FreeBSD.org> | 2006-07-16 21:05:58 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2006-07-16 21:05:58 +0000 |
| commit | d259662b816406ecf85d137bd1b74ab3783e3304 (patch) | |
| tree | 09b9ea4e0111e8df0ac1e5c48088342b372d3f81 /sys | |
| parent | 80da51effccda7797129c019a80243e30385c828 (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/i386/i386/pmap.c | 9 |
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); |
