PTE_V
_Static_assert(PTE_V == RISCV_PTE_V, "PTE_V mismatch");
#define PTE_KERN (PTE_V | PTE_R | PTE_W | PTE_A | PTE_D)
#define PTE_PROMOTE (PTE_V | PTE_RWX | PTE_D | PTE_G | PTE_U | \
if ((l3e & PTE_V) == 0)
if (l2p != NULL && ((l2 = pmap_load(l2p)) & PTE_V) != 0) {
if (l2p == NULL || ((l2 = pmap_load(l2p)) & PTE_V) == 0) {
KASSERT((pmap_load(l0) & PTE_V) == 0,
entry = PTE_V | (pn << PTE_PPN0_S);
KASSERT((pmap_load(l1) & PTE_V) == 0,
entry = PTE_V | (pn << PTE_PPN0_S);
KASSERT((pmap_load(l2) & PTE_V) == 0,
entry = PTE_V | (pn << PTE_PPN0_S);
if (l1 != NULL && (pmap_load(l1) & PTE_V) != 0) {
entry = (PTE_V);
if ((pmap_load(l2) & PTE_V) != 0 &&
entry = (PTE_V);
newl2 = ml3pa | PTE_V;
if ((l3e & PTE_V) == 0)
if (l2 == NULL || ((l2e = pmap_load(l2)) & PTE_V) == 0)
if (((oldpte = pmap_load(pte)) & PTE_V) == 0)
newl1 = ((l2phys / PAGE_SIZE) << PTE_PPN0_S) | PTE_V;
newl2 = ((mptepa / PAGE_SIZE) << PTE_PPN0_S) | PTE_V;
new_l3 = PTE_V | PTE_R | PTE_A;
if (l2 != NULL && ((l2e = pmap_load(l2)) & PTE_V) != 0 &&
if ((orig_l3 & PTE_V) != 0) {
new_l2 = (pd_entry_t)((pn << PTE_PPN0_S) | PTE_R | PTE_V |
if ((pmap_load(l3) & PTE_V) != 0 &&
PTE_V | PTE_R | pmap_memattr_bits(m->md.pv_memattr);
KASSERT((tpte & PTE_V) != 0,
if ((pmap_load(l0) & PTE_V) == 0)
if ((pmap_load(l1) & PTE_V) == 0)
if ((pmap_load(l2) & PTE_V) == 0)
if (l1 == NULL || ((l1e = pmap_load(l1)) & PTE_V) == 0)
if (((l2e = pmap_load(l2)) & PTE_V) == 0)
if (((l3e = pmap_load(l3)) & PTE_V) == 0)
if (l2 != NULL && ((tpte = pmap_load(l2)) & PTE_V) != 0) {
if ((tpte & PTE_V) == 0) {
if (l1p == NULL || (pmap_load(l1p) & PTE_V) == 0)
if (l2p == NULL || (pmap_load(l2p) & PTE_V) == 0)
if ((l1e & PTE_V) == 0) {
if ((l2e & PTE_V) == 0) {
if ((l3e & PTE_V) == 0) {
L1_PDE((vm_paddr_t)l2, PTE_V));
L2_PDE((vm_paddr_t)l3, PTE_V));
L1_PDE((vm_paddr_t)l2, PTE_V));
L1_PDE((vm_paddr_t)l2, PTE_V));
L1_PDE((vm_paddr_t)l2, PTE_V));
L2_PDE((vm_paddr_t)l3, PTE_V));
pmap_store(&kern_l2[slot], L2_PDE(pa, PTE_V));
pmap_store(&l1[slot], L1_PDE(pa, PTE_V));
pmap_store(&l0[slot], L0_PDE((vm_paddr_t)l1, PTE_V));
pmap_store(&devmap_l2[slot], L2_PDE(pa, PTE_V));
pmap_store(&l1[slot], L1_PDE(pa, PTE_V));