PDRMASK
_Static_assert(PDRMASK == AMD64_PDRMASK, "PDRMASK mismatch");
pages += howmany(end - (start & ~PDRMASK), NBPDR);
pages += howmany(end - (start & ~PDRMASK), NBPDR);
PDRMASK)) & PG_FRAME;
superpage_offset = offset & PDRMASK;
if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
(*addr & PDRMASK) == superpage_offset)
if ((*addr & PDRMASK) < superpage_offset)
*addr = (*addr & ~PDRMASK) + superpage_offset;
*addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset;
return ((pd & PG_PS_FRAME) | (va & PDRMASK));
error = pmap_large_map_getva(len, NBPDR, spa & PDRMASK,
} else if (len >= NBPDR && (pa & PDRMASK) == 0 &&
(va & PDRMASK) == 0) {
KASSERT((va & PDRMASK) == 0,
va_next = (va + NBPDR) & ~PDRMASK;
(va & PDRMASK);
m = PHYS_TO_VM_PAGE((pde & PG_PS_FRAME) | (va & PDRMASK));
pa = (pde & PG_PS_FRAME) | (va & PDRMASK);
end = (end + NBPDR) & ~PDRMASK;
end = (end + NBPDR) & ~PDRMASK;
KASSERT((pa & PDRMASK) == 0,
KASSERT((pa & PDRMASK) == 0,
KASSERT((sva & PDRMASK) == 0,
va_next = (sva + NBPDR) & ~PDRMASK;
KASSERT((sva & PDRMASK) == 0,
va_next = (sva + NBPDR) & ~PDRMASK;
if ((newpde & ((PG_FRAME & PDRMASK) | PG_V)) != PG_V) {
" in pmap %p", va & ~PDRMASK, pmap);
" in pmap %p", (oldpte & PG_FRAME & PDRMASK) |
(va & ~PDRMASK), pmap);
KASSERT((va & PDRMASK) == 0, ("pmap_enter: va unaligned"));
if ((va & PDRMASK) == 0 && va + NBPDR <= end &&
va_next = (sva + NBPDR) & ~PDRMASK;
va_next = (addr + NBPDR) & ~PDRMASK;
if ((addr & PDRMASK) != 0 || addr + NBPDR > end_addr)
va_next = (sva + NBPDR) & ~PDRMASK;
if ((tmpva & PDRMASK) == 0 &&
tmpva + PDRMASK < base + size) {
#define trunc_2mpage(x) ((unsigned long)(x) & ~PDRMASK)
#define round_2mpage(x) ((((unsigned long)(x)) + PDRMASK) & ~PDRMASK)
#define trunc_1mpage(x) ((unsigned)(x) & ~PDRMASK)
#define round_1mpage(x) ((((unsigned)(x)) + PDRMASK) & ~PDRMASK)
pa = (pa & PG_PS_FRAME) | (va & PDRMASK);
rtval = (pde & PG_PS_FRAME) | (va & PDRMASK);
(va & PDRMASK));
superpage_offset = start & PDRMASK;
if ((end - start) - ((NBPDR - superpage_offset) & PDRMASK) >= NBPDR) {
if ((va & PDRMASK) < superpage_offset)
va = (va & ~PDRMASK) + superpage_offset;
else if ((va & PDRMASK) > superpage_offset)
va = ((va + PDRMASK) & ~PDRMASK) + superpage_offset;
if ((start & PDRMASK) == 0 && end - start >= NBPDR &&
KASSERT((va & PDRMASK) == 0,
kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK;
kernel_vm_end = (kernel_vm_end + NBPDR) & ~PDRMASK;
KASSERT((pa & PDRMASK) == 0,
KASSERT((pa & PDRMASK) == 0,
KASSERT((sva & PDRMASK) == 0,
pdnxt = (sva + NBPDR) & ~PDRMASK;
KASSERT((sva & PDRMASK) == 0,
pdnxt = (sva + NBPDR) & ~PDRMASK;
if ((newpde & ((PG_FRAME & PDRMASK) | PG_V)) != PG_V) {
" in pmap %p", va & ~PDRMASK, pmap);
oldpteva = (oldpte & PG_FRAME & PDRMASK) |
(va & ~PDRMASK);
KASSERT((va & PDRMASK) == 0, ("pmap_enter: va unaligned"));
KASSERT((va & PDRMASK) == 0, ("va is misaligned"));
if ((va & PDRMASK) == 0 && va + NBPDR <= end &&
pdnxt = (sva + NBPDR) & ~PDRMASK;
pdnxt = (addr + NBPDR) & ~PDRMASK;
if ((addr & PDRMASK) != 0 || addr + NBPDR > end_addr)
pdnxt = (sva + NBPDR) & ~PDRMASK;
if ((tmpva & PDRMASK) == 0 &&
tmpva + PDRMASK < base + size) {
pa = ((pde & PG_PS_FRAME) | (addr & PDRMASK)) &
superpage_offset = offset & PDRMASK;
if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR ||
(*addr & PDRMASK) == superpage_offset)
if ((*addr & PDRMASK) < superpage_offset)
*addr = (*addr & ~PDRMASK) + superpage_offset;
*addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset;
#define trunc_4mpage(x) ((x) & ~PDRMASK)
#define round_4mpage(x) ((((x)) + PDRMASK) & ~PDRMASK)