summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2012-08-05 16:59:02 +0000
committeralc <alc@FreeBSD.org>2012-08-05 16:59:02 +0000
commitbc11d86648e5ccdc7ad2944f1272d0013325e922 (patch)
tree27cea1a9e86ae9f70e31379a44f2266dc99ac49d /sys/amd64
parent7c93ab23a4ba04ce7f001aa304895edb49b287fd (diff)
downloadFreeBSD-src-bc11d86648e5ccdc7ad2944f1272d0013325e922.zip
FreeBSD-src-bc11d86648e5ccdc7ad2944f1272d0013325e922.tar.gz
Shave off a few more cycles from the average execution time of pmap_enter()
by simplifying the control flow and reducing the live range of "om".
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/pmap.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 3ae1230..1f22189 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -3468,7 +3468,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m,
newpte |= PG_G;
newpte |= pmap_cache_bits(m->md.pat_mode, 0);
- mpte = om = NULL;
+ mpte = NULL;
lock = NULL;
rw_rlock(&pvh_global_lock);
@@ -3540,12 +3540,6 @@ retry:
if (((origpte ^ newpte) & ~(PG_M | PG_A)) == 0)
goto unchanged;
goto validate;
- } else {
- /*
- * Yes, fall through to validate the new mapping.
- */
- if ((origpte & PG_MANAGED) != 0)
- om = PHYS_TO_VM_PAGE(opa);
}
} else {
/*
@@ -3578,6 +3572,7 @@ validate:
opa = origpte & PG_FRAME;
if (opa != pa) {
if ((origpte & PG_MANAGED) != 0) {
+ om = PHYS_TO_VM_PAGE(opa);
if ((origpte & (PG_M | PG_RW)) == (PG_M |
PG_RW))
vm_page_dirty(om);
OpenPOWER on IntegriCloud