summaryrefslogtreecommitdiff
path: root/sys/arch/i386/include/pmap.h
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2003-05-26 16:25:33 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2003-05-26 16:25:33 +0000
commit3fcb99ebca01fead53557ba5bc81cde5a67564a0 (patch)
treefdd7ddfdcfc56bb8b26097447d56ae841a3c6f31 /sys/arch/i386/include/pmap.h
parent39609c0a00b7d70995bdfc70fe4d5aabe68ea03a (diff)
pmap_protect strikes again.
Not only do we have to think about PROT_EXEC while dealing with it, but we also have to think about wiring. sigh. We'll have to fix this with an API change. fixes the mlockall problem.
Diffstat (limited to 'sys/arch/i386/include/pmap.h')
-rw-r--r--sys/arch/i386/include/pmap.h17
1 files changed, 7 insertions, 10 deletions
diff --git a/sys/arch/i386/include/pmap.h b/sys/arch/i386/include/pmap.h
index cc806191c88..f134b4d3914 100644
--- a/sys/arch/i386/include/pmap.h
+++ b/sys/arch/i386/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.32 2003/05/13 03:49:04 art Exp $ */
+/* $OpenBSD: pmap.h,v 1.33 2003/05/26 16:25:32 art Exp $ */
/* $NetBSD: pmap.h,v 1.44 2000/04/24 17:18:18 thorpej Exp $ */
/*
@@ -477,15 +477,12 @@ pmap_protect(pmap, sva, eva, prot)
vaddr_t sva, eva;
vm_prot_t prot;
{
- if ((prot & (VM_PROT_WRITE|VM_PROT_EXECUTE)) ==
- (VM_PROT_WRITE|VM_PROT_EXECUTE))
- return;
-
- if ((prot & (VM_PROT_READ|VM_PROT_EXECUTE)) ==
- (VM_PROT_READ|VM_PROT_EXECUTE)) {
- pmap_write_protect(pmap, sva, eva, prot);
- } else {
- pmap_remove(pmap, sva, eva);
+ if ((prot & VM_PROT_WRITE) == 0) {
+ if (prot & (VM_PROT_READ|VM_PROT_EXECUTE)) {
+ pmap_write_protect(pmap, sva, eva, prot);
+ } else {
+ pmap_remove(pmap, sva, eva);
+ }
}
}