L2_S_SIZE
return (L2_S_SIZE - (va & L2_S_OFFSET));
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2*L2_S_SIZE
#if PAGE_SIZE == 2*L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
#if PAGE_SIZE == 2 * L2_S_SIZE
for (vaddr_t eva = va + PAGE_SIZE; va < eva; va += L2_S_SIZE) {
i += PAGE_SIZE, j += PAGE_SIZE / L2_S_SIZE) {
PTE_SYNC_RANGE(ptep, way_size / L2_S_SIZE);
i += PAGE_SIZE, j += PAGE_SIZE / L2_S_SIZE) {
pmap_free_l2_bucket(pm, l2b, PAGE_SIZE / L2_S_SIZE);
l2b->l2b_occupancy += PAGE_SIZE / L2_S_SIZE;
sva += PAGE_SIZE, ptep += PAGE_SIZE / L2_S_SIZE) {
mappings += PAGE_SIZE / L2_S_SIZE;
pm->pm_stats.resident_count -= mappings / (PAGE_SIZE/L2_S_SIZE);
l2b->l2b_occupancy += PAGE_SIZE / L2_S_SIZE;
mappings += PAGE_SIZE / L2_S_SIZE;
ptep += PAGE_SIZE / L2_S_SIZE;
ptep += PAGE_SIZE / L2_S_SIZE;
ptep += PAGE_SIZE / L2_S_SIZE,
#define cpu_csrcp(o) (csrcp + L2_S_SIZE * cnptes * cpu_number() + (o))
#define cpu_cdstp(o) (cdstp + L2_S_SIZE * cnptes * cpu_number() + (o))
L1_TABLE_SIZE / L2_S_SIZE)) {
L1_TABLE_SIZE / L2_S_SIZE)) {
nptes = roundup(nptes, PAGE_SIZE / L2_S_SIZE);
&& arm_pcache.icache_way_size > nptes * L2_S_SIZE) {
nptes = roundup(nptes, PAGE_SIZE / L2_S_SIZE);
nptes = PAGE_SIZE / L2_S_SIZE;
PTE_SYNC_RANGE(ptep, L2_L_SIZE / L2_S_SIZE);
va += L2_S_SIZE, pa += L2_S_SIZE, size -= L2_S_SIZE) {
ptep += PAGE_SIZE / L2_S_SIZE;
limit = L2_S_SIZE - ((vaddr_t)dst & L2_S_OFFSET);
#define PTE_SYNC(ptep) pmap_ptesync((ptep), PAGE_SIZE / L2_S_SIZE)
KASSERTMSG((((uintptr_t)ptep / sizeof(pte)) & (L2_L_SIZE / L2_S_SIZE - 1)) == 0, "%p", ptep);
for (int k = 0; k < L2_L_SIZE / L2_S_SIZE; k++) {
KASSERTMSG((((uintptr_t)ptep / sizeof(pte)) & (PAGE_SIZE / L2_S_SIZE - 1)) == 0, "%p", ptep);
for (int k = 0; k < PAGE_SIZE / L2_S_SIZE; k++) {
pte += L2_S_SIZE;
opte += L2_S_SIZE;
KASSERTMSG((((uintptr_t)ptep / sizeof(*ptep)) & (PAGE_SIZE / L2_S_SIZE - 1)) == 0, "%p", ptep);
for (int k = 1; k < PAGE_SIZE / L2_S_SIZE; k++) {
#define L2_S_SEGSIZE (PAGE_SIZE * L2_S_SIZE / 4)
#define L2_S_OFFSET (L2_S_SIZE - 1)
KASSERT(ptep + size / L2_S_SIZE == vtopte(va + size));
ptep += PAGE_SIZE / L2_S_SIZE, npte += PAGE_SIZE) {
ptep += PAGE_SIZE / L2_S_SIZE) {