RPTE_EAA_W
if ((newpte & RPTE_EAA_W) == 0)
#define PG_RW RPTE_EAA_W
if (!atomic_cmpset_long(firstpte, htobe64(newpde), htobe64((newpde | RPTE_EAA_R) & ~RPTE_EAA_W)))
newpde &= ~RPTE_EAA_W;
if (!atomic_cmpset_long(pte, htobe64(oldpte), htobe64((oldpte | RPTE_EAA_R) & ~RPTE_EAA_W)))
oldpte &= ~RPTE_EAA_W;
newpte |= RPTE_EAA_W;
attr_bits = RPTE_EAA_R | RPTE_EAA_W | RPTE_EAA_P | PG_M | PG_A;
pteval = pa | RPTE_EAA_R | RPTE_EAA_W | RPTE_EAA_P | PG_M | PG_A;
newl3 = (pml3_entry_t)(pa | RPTE_EAA_P | RPTE_EAA_R | RPTE_EAA_W);
MPASS((pte) & (RPTE_EAA_R | RPTE_EAA_W | RPTE_EAA_X)); \
RPTE_EAA_W | RPTE_EAA_P | PG_M | PG_A);