Make code more compact and readable better in pmap_extract()

like functions. No functional change.

This is a follow up to r294722.

Suggested by:	kib
This commit is contained in:
Svatopluk Kraus 2016-01-26 09:50:23 +00:00
parent 719d2f1ad5
commit 24152caa00
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=294789
2 changed files with 18 additions and 48 deletions

View File

@ -3446,14 +3446,10 @@ pmap_extract_locked(pmap_t pmap, vm_offset_t va)
pte = ptep[l2pte_index(va)];
if (pte == 0)
return (0);
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (pte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
}
return (pa);
}
@ -3515,20 +3511,15 @@ pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
PMAP_UNLOCK(pmap);
return (NULL);
} else {
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
panic("extract and hold section mapping");
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
if (vm_page_pa_tryrelock(pmap, pa & PG_FRAME, &paddr))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
vm_page_hold(m);
}
}
PMAP_UNLOCK(pmap);
@ -3567,14 +3558,10 @@ pmap_dump_kextract(vm_offset_t va, pt2_entry_t *pte2p)
pa = 0;
goto out;
}
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (pte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
}
out:
if (pte2p != NULL)

View File

@ -2787,18 +2787,14 @@ pmap_kremove(vm_offset_t va)
pte = &l2b->l2b_kva[l2pte_index(va)];
opte = *pte;
if (l2pte_valid(opte)) {
/* pa = vtophs(va) taken from pmap_extract() */
switch (opte & L2_TYPE_MASK) {
case L2_TYPE_L:
/* pa = vtophs(va) taken from pmap_extract() */
if ((opte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (opte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (opte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
/* note: should never have to remove an allocation
* before the pvzone is initialized.
*/
/* note: should never have to remove an allocation
* before the pvzone is initialized.
*/
rw_wlock(&pvh_global_lock);
PMAP_LOCK(pmap_kernel());
if (pvzone != NULL && (m = vm_phys_paddr_to_vm_page(pa)) &&
@ -3645,14 +3641,10 @@ pmap_extract_locked(pmap_t pmap, vm_offset_t va)
pte = ptep[l2pte_index(va)];
if (pte == 0)
return (0);
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (pte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
}
return (pa);
}
@ -3717,15 +3709,10 @@ pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot)
return (NULL);
}
if (pte & L2_S_PROT_W || (prot & VM_PROT_WRITE) == 0) {
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (pte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
if (vm_page_pa_tryrelock(pmap, pa & PG_FRAME, &paddr))
goto retry;
m = PHYS_TO_VM_PAGE(pa);
@ -3769,14 +3756,10 @@ pmap_dump_kextract(vm_offset_t va, pt2_entry_t *pte2p)
pa = 0;
goto out;
}
switch (pte & L2_TYPE_MASK) {
case L2_TYPE_L:
if ((pte & L2_TYPE_MASK) == L2_TYPE_L)
pa = (pte & L2_L_FRAME) | (va & L2_L_OFFSET);
break;
default:
else
pa = (pte & L2_S_FRAME) | (va & L2_S_OFFSET);
break;
}
}
out:
if (pte2p != NULL)