Lines Matching refs:level
73 constexpr uint vaddr_to_index(vaddr_t va, uint level) { in vaddr_to_index() argument
75 DEBUG_ASSERT(level < RISCV_MMU_PT_LEVELS); in vaddr_to_index()
80 …uint index = ((va >> PAGE_SIZE_SHIFT) >> (level * RISCV_MMU_PT_SHIFT)) & (RISCV_MMU_PT_ENTRIES - 1… in vaddr_to_index()
81 LTRACEF_LEVEL(3, "canonical va %#lx, level %u = index %#x\n", va, level, index); in vaddr_to_index()
86 uintptr_t constexpr page_size_per_level(uint level) { in page_size_per_level() argument
88 DEBUG_ASSERT(level < RISCV_MMU_PT_LEVELS); in page_size_per_level()
90 return 1UL << (PAGE_SIZE_SHIFT + level * RISCV_MMU_PT_SHIFT); in page_size_per_level()
93 uintptr_t constexpr page_mask_per_level(uint level) { in page_mask_per_level() argument
94 return page_size_per_level(level) - 1; in page_mask_per_level()
308 using page_walk_cb = walk_cb_ret(*)(uint level, uint index, riscv_pte_t pte, vaddr_t *vaddr);
319 uint level = RISCV_MMU_PT_LEVELS - 1; in riscv_pt_walk()
320 uint index = vaddr_to_index(vaddr, level); in riscv_pt_walk()
325 level, index, ptep, *ptep, vaddr); in riscv_pt_walk()
337 level--; in riscv_pt_walk()
338 index = vaddr_to_index(vaddr, level); in riscv_pt_walk()
343 auto ret = callback(level, index, pte, &vaddr); in riscv_pt_walk()
378 level--; in riscv_pt_walk()
379 index = vaddr_to_index(vaddr, level); in riscv_pt_walk()
386 DEBUG_ASSERT(level < RISCV_MMU_PT_LEVELS); in riscv_pt_walk()
417 …auto map_cb = [&paddr, &count, aspace, flags](uint level, uint index, riscv_pte_t pte, vaddr_t *va… in arch_mmu_map() argument
419 level, index, pte, *vaddr, paddr, count, flags); in arch_mmu_map()
427 if (level > 0) { in arch_mmu_map()
437 if (level > 0) { in arch_mmu_map()
483 …auto query_cb = [paddr, flags](uint level, uint index, riscv_pte_t pte, vaddr_t *vaddr) -> walk_cb… in arch_mmu_query() argument
484 LTRACEF("level %u, index %u, pte %#lx, vaddr %#lx\n", level, index, pte, *vaddr); in arch_mmu_query()
494 uintptr_t page_mask = page_mask_per_level(level); in arch_mmu_query()
537 (uint level, uint index, riscv_pte_t pte, vaddr_t *vaddr) -> walk_cb_ret { in arch_mmu_unmap() argument
538 LTRACEF("level %u, index %u, pte %#lx, vaddr %#lx\n", level, index, pte, *vaddr); in arch_mmu_unmap()
545 if (level > 0) { in arch_mmu_unmap()