summaryrefslogtreecommitdiff
path: root/sys/alpha
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2003-09-07 20:02:38 +0000
committerAlan Cox <alc@FreeBSD.org>2003-09-07 20:02:38 +0000
commit5d314346f53a7eaf027f749f11a5684e8671c827 (patch)
tree62fe7437a9732405a459bdb6f35f46878c26b9fd /sys/alpha
parentc8956b36d644c1fda27385e89349b6b759ae904f (diff)
Notes
Diffstat (limited to 'sys/alpha')
-rw-r--r--sys/alpha/alpha/pmap.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/sys/alpha/alpha/pmap.c b/sys/alpha/alpha/pmap.c
index 10a2df3fae4c..223d82408dab 100644
--- a/sys/alpha/alpha/pmap.c
+++ b/sys/alpha/alpha/pmap.c
@@ -2749,23 +2749,30 @@ pmap_mincore(pmap, addr)
*/
if ((*pte & PG_FOW) == 0)
val |= MINCORE_MODIFIED|MINCORE_MODIFIED_OTHER;
- /*
- * Modified by someone
- */
- else if (m->dirty || pmap_is_modified(m))
- val |= MINCORE_MODIFIED_OTHER;
+ else {
+ /*
+ * Modified by someone
+ */
+ vm_page_lock_queues();
+ if (m->dirty || pmap_is_modified(m))
+ val |= MINCORE_MODIFIED_OTHER;
+ vm_page_unlock_queues();
+ }
/*
* Referenced by us
*/
if ((*pte & (PG_FOR | PG_FOE)) == 0)
val |= MINCORE_REFERENCED|MINCORE_REFERENCED_OTHER;
-
- /*
- * Referenced by someone
- */
- else if ((m->flags & PG_REFERENCED) || pmap_ts_referenced(m)) {
- val |= MINCORE_REFERENCED_OTHER;
- vm_page_flag_set(m, PG_REFERENCED);
+ else {
+ /*
+ * Referenced by someone
+ */
+ vm_page_lock_queues();
+ if ((m->flags & PG_REFERENCED) || pmap_ts_referenced(m)) {
+ val |= MINCORE_REFERENCED_OTHER;
+ vm_page_flag_set(m, PG_REFERENCED);
+ }
+ vm_page_unlock_queues();
}
}
return val;