PERFORCE change 116413 for review
Oleksandr Tymoshenko
gonzo at FreeBSD.org
Fri Mar 23 12:56:41 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=116413
Change 116413 by gonzo at gonzo_jeeves on 2007/03/23 12:56:32
o Implement pmap_page_protect.
Affected files ...
.. //depot/projects/mips2/src/sys/mips/mips/pmap.c#24 edit
Differences ...
==== //depot/projects/mips2/src/sys/mips/mips/pmap.c#24 (text+ko) ====
@@ -1575,12 +1575,31 @@
void
pmap_page_protect(vm_page_t m, vm_prot_t prot)
{
+ pv_entry_t pv, npv;
+ vm_offset_t va;
+ pt_entry_t *pte;
+
/*
* Consider only readonly case
*/
if ((prot & VM_PROT_WRITE) == 0) {
if (prot & (VM_PROT_READ | VM_PROT_EXECUTE)) {
- panic("pmap_page_protect unimplemented\n");
+ /*
+ * Loop over all current mappings
+ * setting/clearing as appropos.
+ */
+ for(pv = TAILQ_FIRST(&m->md.pv_list); pv; pv = npv) {
+ npv = TAILQ_NEXT(pv, pv_plist);
+ pte = pmap_pte(pv->pv_pmap, pv->pv_va);
+
+ if ((pte == NULL) || !pte_valid(pte))
+ panic("page on pm_pvlist has no pte\n");
+
+ va = pv->pv_va;
+ pmap_protect(pv->pv_pmap, va, va + PAGE_SIZE,
+ prot);
+
+ }
} else {
pmap_remove_all(m);
}
More information about the p4-projects
mailing list