Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/pmap.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 9,319 Lines • ▼ Show 20 Lines | pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *pap) | ||||
pa = 0; | pa = 0; | ||||
val = 0; | val = 0; | ||||
pdpe = pmap_pdpe(pmap, addr); | pdpe = pmap_pdpe(pmap, addr); | ||||
if ((*pdpe & PG_V) != 0) { | if ((*pdpe & PG_V) != 0) { | ||||
if ((*pdpe & PG_PS) != 0) { | if ((*pdpe & PG_PS) != 0) { | ||||
pte = *pdpe; | pte = *pdpe; | ||||
pa = ((pte & PG_PS_PDP_FRAME) | (addr & PDPMASK)) & | pa = ((pte & PG_PS_PDP_FRAME) | (addr & PDPMASK)) & | ||||
PG_FRAME; | PG_FRAME; | ||||
val = MINCORE_SUPER; | val = MINCORE_PSIND(2); | ||||
} else { | } else { | ||||
pdep = pmap_pde(pmap, addr); | pdep = pmap_pde(pmap, addr); | ||||
if (pdep != NULL && (*pdep & PG_V) != 0) { | if (pdep != NULL && (*pdep & PG_V) != 0) { | ||||
if ((*pdep & PG_PS) != 0) { | if ((*pdep & PG_PS) != 0) { | ||||
pte = *pdep; | pte = *pdep; | ||||
/* Compute the physical address of the 4KB page. */ | |||||
pa = ((pte & PG_PS_FRAME) | (addr & | pa = ((pte & PG_PS_FRAME) | (addr & | ||||
PDRMASK)) & PG_FRAME; | PDRMASK)) & PG_FRAME; | ||||
val = MINCORE_SUPER; | val = MINCORE_PSIND(1); | ||||
} else { | } else { | ||||
pte = *pmap_pde_to_pte(pdep, addr); | pte = *pmap_pde_to_pte(pdep, addr); | ||||
pa = pte & PG_FRAME; | pa = pte & PG_FRAME; | ||||
val = 0; | val = 0; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 2,045 Lines • Show Last 20 Lines |