Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/pmap.c
Show First 20 Lines • Show All 2,741 Lines • ▼ Show 20 Lines | if (l3 == NULL) { | ||||
pmap_distribute_l1(pmap, pmap_l1_index(va), entry); | pmap_distribute_l1(pmap, pmap_l1_index(va), entry); | ||||
l2 = pmap_l1_to_l2(l1, va); | l2 = pmap_l1_to_l2(l1, va); | ||||
} | } | ||||
l3_m = vm_page_alloc_noobj(VM_ALLOC_NORMAL | | l3_m = vm_page_alloc_noobj(VM_ALLOC_NORMAL | | ||||
VM_ALLOC_WIRED | VM_ALLOC_ZERO); | VM_ALLOC_WIRED | VM_ALLOC_ZERO); | ||||
if (l3_m == NULL) | if (l3_m == NULL) | ||||
panic("pmap_enter: l3 pte_m == NULL"); | panic("pmap_enter: l3 pte_m == NULL"); | ||||
if ((l3_m->flags & PG_ZERO) == 0) | |||||
pmap_zero_page(l3_m); | |||||
l3_pa = VM_PAGE_TO_PHYS(l3_m); | l3_pa = VM_PAGE_TO_PHYS(l3_m); | ||||
l3_pn = (l3_pa / PAGE_SIZE); | l3_pn = (l3_pa / PAGE_SIZE); | ||||
entry = (PTE_V); | entry = (PTE_V); | ||||
entry |= (l3_pn << PTE_PPN0_S); | entry |= (l3_pn << PTE_PPN0_S); | ||||
pmap_store(l2, entry); | pmap_store(l2, entry); | ||||
l3 = pmap_l2_to_l3(l2, va); | l3 = pmap_l2_to_l3(l2, va); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,915 Lines • Show Last 20 Lines |