aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2005-09-03 18:20:20 +0000
committerAlan Cox <alc@FreeBSD.org>2005-09-03 18:20:20 +0000
commitba8bca610cf08341d591a11f5d9816401bd325b3 (patch)
tree15a723ce98510b7ad44411dc2c1fe9370aed91b1 /sys/vm
parente17c0e3256538c4ceddf4cd8c2a0a1940f89024f (diff)
Notes
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/pmap.h2
-rw-r--r--sys/vm/vm_fault.c3
-rw-r--r--sys/vm/vm_map.c4
3 files changed, 5 insertions, 4 deletions
diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h
index 4eb8f5ad1f454..d5b64c3fc7722 100644
--- a/sys/vm/pmap.h
+++ b/sys/vm/pmap.h
@@ -100,7 +100,7 @@ void pmap_copy_page(vm_page_t, vm_page_t);
void pmap_enter(pmap_t, vm_offset_t, vm_page_t, vm_prot_t,
boolean_t);
vm_page_t pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m,
- vm_page_t mpte);
+ vm_prot_t prot, vm_page_t mpte);
vm_paddr_t pmap_extract(pmap_t pmap, vm_offset_t va);
vm_page_t pmap_extract_and_hold(pmap_t pmap, vm_offset_t va,
vm_prot_t prot);
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 57fbca0c6e573..2dc873a742cb3 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1007,7 +1007,8 @@ vm_fault_prefault(pmap_t pmap, vm_offset_t addra, vm_map_entry_t entry)
vm_page_lock_queues();
if ((m->queue - m->pc) == PQ_CACHE)
vm_page_deactivate(m);
- mpte = pmap_enter_quick(pmap, addr, m, mpte);
+ mpte = pmap_enter_quick(pmap, addr, m,
+ entry->protection, mpte);
vm_page_unlock_queues();
}
VM_OBJECT_UNLOCK(lobject);
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index 519163b997fe7..c162c509924aa 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -1375,7 +1375,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot,
vm_page_t p, mpte;
boolean_t are_queues_locked;
- if ((prot & VM_PROT_READ) == 0 || object == NULL)
+ if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 || object == NULL)
return;
VM_OBJECT_LOCK(object);
if (object->type == OBJT_DEVICE) {
@@ -1433,7 +1433,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offset_t addr, vm_prot_t prot,
if ((p->queue - p->pc) == PQ_CACHE)
vm_page_deactivate(p);
mpte = pmap_enter_quick(map->pmap,
- addr + ptoa(tmpidx), p, mpte);
+ addr + ptoa(tmpidx), p, prot, mpte);
}
}
if (are_queues_locked)