clearbits
pmap_sync_pv(struct pv_pte *pvpte, paddr_t pa, int clearbits, uint8_t *oattrs,
return (*pmap->pm_sync_pv)(ptp, va, pa, clearbits, oattrs,
if (clearbits != ~0) {
KASSERT((clearbits & ~(PP_ATTRS_D|PP_ATTRS_A|PP_ATTRS_W)) == 0);
clearbits = pmap_pp_attrs_to_pte(clearbits);
if ((opte & clearbits) == 0) {
!(clearbits == PTE_W && (opte & PTE_D) == 0);
npte = opte & ~clearbits;
pmap_pp_clear_attrs(struct pmap_page *pp, paddr_t pa, unsigned clearbits)
if (pmap_sync_pv(pvpte, pa, clearbits, &oattrs, NULL)) {
result = pp->pp_attrs & clearbits;
pp->pp_attrs &= ~clearbits;
pmap_clear_attrs(struct vm_page *pg, unsigned clearbits)
return pmap_pp_clear_attrs(pp, pa, clearbits);
pmap_pv_clear_attrs(paddr_t pa, unsigned clearbits)
return pmap_pp_clear_attrs(pp, pa, clearbits);
pmap_ept_sync_pv(struct vm_page *ptp, vaddr_t va, paddr_t pa, int clearbits,
if (clearbits != ~0) {
KASSERT((clearbits & ~(PP_ATTRS_D|PP_ATTRS_A|PP_ATTRS_W)) == 0);
clearbits = pmap_pp_attrs_to_ept(clearbits);
if ((opte & clearbits) == 0) {
!(clearbits == EPT_W && (opte & EPT_D) == 0);
npte = opte & ~clearbits;
clearbits(bs, test_length);
clearbits(bs, test_length);