Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/pmap.c
Context not available. | |||||
mtx_assert(&kernel_map->system_mtx, MA_OWNED); | mtx_assert(&kernel_map->system_mtx, MA_OWNED); | ||||
addr = roundup2(addr, L2_SIZE); | addr = roundup2(addr, L2_SIZE); | ||||
if (addr - 1 >= kernel_map->max_offset) | if (addr - 1 >= kernel_map->header.start) | ||||
addr = kernel_map->max_offset; | addr = kernel_map->header.start; | ||||
while (kernel_vm_end < addr) { | while (kernel_vm_end < addr) { | ||||
l0 = pmap_l0(kernel_pmap, kernel_vm_end); | l0 = pmap_l0(kernel_pmap, kernel_vm_end); | ||||
KASSERT(pmap_load(l0) != 0, | KASSERT(pmap_load(l0) != 0, | ||||
Context not available. | |||||
l2 = pmap_l1_to_l2(l1, kernel_vm_end); | l2 = pmap_l1_to_l2(l1, kernel_vm_end); | ||||
if ((pmap_load(l2) & ATTR_AF) != 0) { | if ((pmap_load(l2) & ATTR_AF) != 0) { | ||||
kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET; | kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET; | ||||
if (kernel_vm_end - 1 >= kernel_map->max_offset) { | if (kernel_vm_end - 1 >= kernel_map->header.start) { | ||||
kernel_vm_end = kernel_map->max_offset; | kernel_vm_end = kernel_map->header.start; | ||||
break; | break; | ||||
} | } | ||||
continue; | continue; | ||||
Context not available. | |||||
pmap_invalidate_page(kernel_pmap, kernel_vm_end); | pmap_invalidate_page(kernel_pmap, kernel_vm_end); | ||||
kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET; | kernel_vm_end = (kernel_vm_end + L2_SIZE) & ~L2_OFFSET; | ||||
if (kernel_vm_end - 1 >= kernel_map->max_offset) { | if (kernel_vm_end - 1 >= kernel_map->header.start) { | ||||
kernel_vm_end = kernel_map->max_offset; | kernel_vm_end = kernel_map->header.start; | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
Context not available. |