ATTR_DESCR_MASK
_Static_assert(ATTR_DESCR_MASK == AARCH64_ATTR_DESCR_MASK,
if ((l1e & ATTR_DESCR_MASK) == L1_BLOCK) {
} else if ((l2e & ATTR_DESCR_MASK) == L2_BLOCK) {
} else if ((l2e & ATTR_DESCR_MASK) == L2_TABLE) {
if ((l3e & ATTR_DESCR_MASK) != L3_PAGE)
if ((l1e & ATTR_DESCR_MASK) == L1_BLOCK) {
} else if ((l2e & ATTR_DESCR_MASK) == L2_BLOCK) {
if ((pmap_load(l2) & ATTR_DESCR_MASK) == L2_BLOCK)
if ((l1e & ATTR_DESCR_MASK) == L1_BLOCK) {
MPASS((l0e & ATTR_DESCR_MASK) == L0_TABLE);
if ((l2e & ATTR_DESCR_MASK) == L2_BLOCK) {
MPASS((l1e & ATTR_DESCR_MASK) == L1_TABLE);
MPASS((l2e & ATTR_DESCR_MASK) == L2_TABLE);
KASSERT((tpte & ATTR_DESCR_MASK) == L1_BLOCK,
tpte & ATTR_DESCR_MASK));
KASSERT((tpte & ATTR_DESCR_MASK) == L2_BLOCK,
tpte & ATTR_DESCR_MASK));
KASSERT((tpte & ATTR_DESCR_MASK) == L3_PAGE,
tpte & ATTR_DESCR_MASK));
KASSERT((lvl == 3 && (tpte & ATTR_DESCR_MASK) == L3_PAGE) ||
(lvl < 3 && (tpte & ATTR_DESCR_MASK) == L1_BLOCK),
tpte & ATTR_DESCR_MASK));
if (l1 != NULL && (pmap_load(l1) & ATTR_DESCR_MASK) == L1_TABLE) {
KASSERT((old_l2 & ATTR_DESCR_MASK) == L2_BLOCK,
if ((pmap_load(l1) & ATTR_DESCR_MASK) == L1_BLOCK) {
if ((l3_paddr & ATTR_DESCR_MASK) == L2_BLOCK) {
if ((l3_paddr & ATTR_DESCR_MASK) != L2_TABLE)
KASSERT((old_l2 & ATTR_DESCR_MASK) == L2_BLOCK,
if ((pmap_load(l1) & ATTR_DESCR_MASK) == L1_BLOCK) {
if ((pmap_load(l2) & ATTR_DESCR_MASK) == L2_BLOCK) {
KASSERT((pmap_load(l2) & ATTR_DESCR_MASK) == L2_TABLE,
((newl2 & ATTR_DESCR_MASK) != L3_PAGE)) { /* ... or is invalid */
pa = (PTE_TO_PHYS(newl2) | (newl2 & ATTR_DESCR_MASK))
if ((PTE_TO_PHYS(oldl3) | (oldl3 & ATTR_DESCR_MASK)) != pa) {
newl2 &= ~(ATTR_CONTIGUOUS | ATTR_AF | ATTR_DESCR_MASK) | all_l3e_AF;
(firstl3c & ATTR_DESCR_MASK) != L3_PAGE) { /* ...or is invalid. */
pa = (PTE_TO_PHYS(firstl3c) | (firstl3c & ATTR_DESCR_MASK)) +
if ((PTE_TO_PHYS(oldl3) | (oldl3 & ATTR_DESCR_MASK)) != pa) {
(origpte & ATTR_DESCR_MASK) == L1_BLOCK) ||
((origpte & ATTR_DESCR_MASK) == L2_BLOCK &&
if ((pmap_load(l2) & ATTR_DESCR_MASK) == L2_BLOCK &&
if ((old_l2 & ATTR_DESCR_MASK) == L2_BLOCK) {
if ((pmap_load(l0) & ATTR_DESCR_MASK) != L0_TABLE)
if ((old_l2 & ATTR_DESCR_MASK) == L2_BLOCK) {
(pmap_load(l2) & ATTR_DESCR_MASK) ==
if ((pmap_load(l2p) & ATTR_DESCR_MASK) ==
KASSERT((pmap_load(l2p) & ATTR_DESCR_MASK) == L2_BLOCK,
if ((pmap_load(l1) & ATTR_DESCR_MASK) != L1_TABLE)
if ((pmap_load(l1) & ATTR_DESCR_MASK) ==
if ((pmap_load(l2) & ATTR_DESCR_MASK) ==
if ((pmap_load(l1) & ATTR_DESCR_MASK) == L1_BLOCK) {
if ((pmap_load(l2) & ATTR_DESCR_MASK) == L2_BLOCK) {
KASSERT((pmap_load(l2) & ATTR_DESCR_MASK) == L2_TABLE,
desc = pmap_load(l0) & ATTR_DESCR_MASK;
desc = pmap_load(l1) & ATTR_DESCR_MASK;
if ((pmap_load(l1) & ATTR_DESCR_MASK) == L1_BLOCK) {
desc = pmap_load(l2) & ATTR_DESCR_MASK;
if ((srcptepaddr & ATTR_DESCR_MASK) == L2_BLOCK) {
KASSERT((srcptepaddr & ATTR_DESCR_MASK) == L2_TABLE,
desc = pmap_load(l1) & ATTR_DESCR_MASK;
desc = pmap_load(l2) & ATTR_DESCR_MASK;
KASSERT((tpte & ATTR_DESCR_MASK) ==
KASSERT((tpte & ATTR_DESCR_MASK) ==
if ((pmap_load(l3) & ATTR_DESCR_MASK) != L3_PAGE)
mask |= ATTR_AF | ATTR_DESCR_MASK;
mask |= ATTR_AF | ATTR_DESCR_MASK;
desc = pmap_load(l0p) & ATTR_DESCR_MASK;
desc = pmap_load(l1p) & ATTR_DESCR_MASK;
desc = pmap_load(l2p) & ATTR_DESCR_MASK;
desc = pmap_load(l3p) & ATTR_DESCR_MASK;
if ((pmap_load(l1) & ATTR_DESCR_MASK) == L1_BLOCK) {
if ((oldl2 & ATTR_DESCR_MASK) == L2_BLOCK) {
KASSERT((pmap_load(l2) & ATTR_DESCR_MASK) == L2_TABLE,
if ((oldl3 & (ATTR_SW_MANAGED | ATTR_DESCR_MASK)) !=
if ((pmap_load(l0p) & ATTR_DESCR_MASK) != L0_TABLE)
if ((pmap_load(l1p) & ATTR_DESCR_MASK) == L1_BLOCK) {
if ((pmap_load(l1p) & ATTR_DESCR_MASK) != L1_TABLE)
if ((pmap_load(l2p) & ATTR_DESCR_MASK) == L2_BLOCK) {
if ((pmap_load(l2p) & ATTR_DESCR_MASK) != L2_TABLE)
KASSERT((oldl1 & ATTR_DESCR_MASK) == L1_BLOCK,
KASSERT(l2[0] == (ATTR_CONTIGUOUS | (oldl1 & ~ATTR_DESCR_MASK) |
ATTR_CONTIGUOUS | (oldl1 & ~ATTR_DESCR_MASK) | L2_BLOCK));
return ((l3 & ATTR_DESCR_MASK) == L3_PAGE);
KASSERT((oldl2 & ATTR_DESCR_MASK) == L2_BLOCK,
newl3 = ATTR_CONTIGUOUS | (oldl2 & ~ATTR_DESCR_MASK) | L3_PAGE;
if ((smmu_pmap_load(l0) & ATTR_DESCR_MASK) != IOMMU_L0_TABLE)
if ((smmu_pmap_load(l1) & ATTR_DESCR_MASK) != IOMMU_L1_TABLE)
desc = smmu_pmap_load(l0) & ATTR_DESCR_MASK;
desc = smmu_pmap_load(l1) & ATTR_DESCR_MASK;
desc = smmu_pmap_load(l2) & ATTR_DESCR_MASK;
desc = smmu_pmap_load(l1) & ATTR_DESCR_MASK;
desc = smmu_pmap_load(l2) & ATTR_DESCR_MASK;
if ((smmu_pmap_load(l3) & ATTR_DESCR_MASK) != IOMMU_L3_PAGE)
return ((l3 & ATTR_DESCR_MASK) == IOMMU_L3_PAGE);
if ((l1e & ATTR_DESCR_MASK) == IOMMU_L1_BLOCK) {
if ((pte & ATTR_DESCR_MASK) != L0_TABLE)
switch (pte & ATTR_DESCR_MASK) {
if ((pte & ATTR_DESCR_MASK) == L3_PAGE)
MPASS((l0e & ATTR_DESCR_MASK) == L0_TABLE);
MPASS((l1e & ATTR_DESCR_MASK) == L1_TABLE);
MPASS((l2e & ATTR_DESCR_MASK) == L2_TABLE);