Fixed some page table reference count problems; these changes may not be

complete, but should be closer to correct than before.
This commit is contained in:
dg 1995-01-15 09:06:23 +00:00
parent cb0c19fd44
commit 1f74d1933c
2 changed files with 10 additions and 6 deletions

View File

@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
* $Id: pmap.c,v 1.40 1995/01/09 16:04:38 davidg Exp $
* $Id: pmap.c,v 1.41 1995/01/14 04:58:53 davidg Exp $
*/
/*
@ -906,8 +906,8 @@ pmap_remove(pmap, sva, eva)
pv = pa_to_pvh(pa);
pmap_remove_entry(pmap, pv, sva);
pmap_unuse_pt(pmap, sva);
}
pmap_unuse_pt(pmap, sva);
pmap_update();
return;
}
@ -981,6 +981,7 @@ pmap_remove(pmap, sva, eva)
*/
pa = ((int)oldpte) & PG_FRAME;
if (!pmap_is_managed(pa)) {
pmap_unuse_pt(pmap, va);
++sva;
continue;
}
@ -1029,6 +1030,7 @@ pmap_remove_all(pa)
/*
* Not one of ours
*/
/* XXX this makes pmap_page_protect(NONE) illegal for non-managed pages! */
if (!pmap_is_managed(pa))
return;
@ -1061,8 +1063,8 @@ pmap_remove_all(pa)
}
*pte = 0;
pmap_unuse_pt(pmap, va);
}
pmap_unuse_pt(pmap, va);
npv = pv->pv_next;
if (npv) {

View File

@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
* $Id: pmap.c,v 1.40 1995/01/09 16:04:38 davidg Exp $
* $Id: pmap.c,v 1.41 1995/01/14 04:58:53 davidg Exp $
*/
/*
@ -906,8 +906,8 @@ pmap_remove(pmap, sva, eva)
pv = pa_to_pvh(pa);
pmap_remove_entry(pmap, pv, sva);
pmap_unuse_pt(pmap, sva);
}
pmap_unuse_pt(pmap, sva);
pmap_update();
return;
}
@ -981,6 +981,7 @@ pmap_remove(pmap, sva, eva)
*/
pa = ((int)oldpte) & PG_FRAME;
if (!pmap_is_managed(pa)) {
pmap_unuse_pt(pmap, va);
++sva;
continue;
}
@ -1029,6 +1030,7 @@ pmap_remove_all(pa)
/*
* Not one of ours
*/
/* XXX this makes pmap_page_protect(NONE) illegal for non-managed pages! */
if (!pmap_is_managed(pa))
return;
@ -1061,8 +1063,8 @@ pmap_remove_all(pa)
}
*pte = 0;
pmap_unuse_pt(pmap, va);
}
pmap_unuse_pt(pmap, va);
npv = pv->pv_next;
if (npv) {