Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/pmap.c
Show First 20 Lines • Show All 4,215 Lines • ▼ Show 20 Lines | pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *pap) | ||||
int val; | int val; | ||||
bool managed; | bool managed; | ||||
PMAP_LOCK(pmap); | PMAP_LOCK(pmap); | ||||
l2 = pmap_l2(pmap, addr); | l2 = pmap_l2(pmap, addr); | ||||
if (l2 != NULL && ((tpte = pmap_load(l2)) & PTE_V) != 0) { | if (l2 != NULL && ((tpte = pmap_load(l2)) & PTE_V) != 0) { | ||||
if ((tpte & PTE_RWX) != 0) { | if ((tpte & PTE_RWX) != 0) { | ||||
pa = PTE_TO_PHYS(tpte) | (addr & L2_OFFSET); | pa = PTE_TO_PHYS(tpte) | (addr & L2_OFFSET); | ||||
val = MINCORE_INCORE | MINCORE_SUPER; | val = MINCORE_INCORE | MINCORE_PSIND(1); | ||||
} else { | } else { | ||||
l3 = pmap_l2_to_l3(l2, addr); | l3 = pmap_l2_to_l3(l2, addr); | ||||
tpte = pmap_load(l3); | tpte = pmap_load(l3); | ||||
if ((tpte & PTE_V) == 0) { | if ((tpte & PTE_V) == 0) { | ||||
PMAP_UNLOCK(pmap); | PMAP_UNLOCK(pmap); | ||||
return (0); | return (0); | ||||
} | } | ||||
pa = PTE_TO_PHYS(tpte) | (addr & L3_OFFSET); | pa = PTE_TO_PHYS(tpte) | (addr & L3_OFFSET); | ||||
▲ Show 20 Lines • Show All 407 Lines • Show Last 20 Lines |