summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2004-06-08 02:20:40 +0000
committerpeter <peter@FreeBSD.org>2004-06-08 02:20:40 +0000
commitf9a170c34a9a0d3656dea30832512c8f16ec97c8 (patch)
tree11a336ada626b796ff4675e45a70a48b7adc5224 /sys
parent0ef9412643b4766069819fd50232234583dfe026 (diff)
downloadFreeBSD-src-f9a170c34a9a0d3656dea30832512c8f16ec97c8.zip
FreeBSD-src-f9a170c34a9a0d3656dea30832512c8f16ec97c8.tar.gz
In pmap_extract_and_hold(), there is no need to mask off PG_FRAME because
pmap_extract() already does it. In pmap_enter(), opa has already been masked so don't do it again. Wrap a long line (recent transgression). Use trunc_page() in pmap_mapdev() instead of anding with PG_FRAME, since that is what we really meant. Submitted by: alc (first item)
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 41c48b3..d332045 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -808,7 +808,7 @@ pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
m = NULL;
mtx_lock(&Giant);
if ((pa = pmap_extract(pmap, va)) != 0) {
- m = PHYS_TO_VM_PAGE(pa & PG_FRAME);
+ m = PHYS_TO_VM_PAGE(pa);
vm_page_lock_queues();
vm_page_hold(m);
vm_page_unlock_queues();
@@ -1807,7 +1807,8 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
if ((pbits & PG_M) != 0 &&
pmap_track_modified(sva)) {
if (m == NULL)
- m = PHYS_TO_VM_PAGE(pbits & PG_FRAME);
+ m = PHYS_TO_VM_PAGE(pbits &
+ PG_FRAME);
vm_page_dirty(m);
pbits &= ~PG_M;
}
@@ -1928,7 +1929,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot,
if (origpte & PG_MANAGED) {
if ((origpte & PG_M) && pmap_track_modified(va)) {
vm_page_t om;
- om = PHYS_TO_VM_PAGE(opa & PG_FRAME);
+ om = PHYS_TO_VM_PAGE(opa);
vm_page_dirty(om);
}
pa |= PG_MANAGED;
@@ -2758,7 +2759,7 @@ pmap_mapdev(pa, size)
va = kmem_alloc_nofault(kernel_map, size);
if (!va)
panic("pmap_mapdev: Couldn't alloc kernel virtual memory");
- pa = pa & PG_FRAME;
+ pa = trunc_page(pa);
for (tmpva = va; size > 0; ) {
pmap_kenter(tmpva, pa);
size -= PAGE_SIZE;
OpenPOWER on IntegriCloud