summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/cpu/mmu.c
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-11-19 15:21:29 -0500
committerIan Moffett <ian@osmora.org>2025-11-19 15:21:29 -0500
commitc3092a9c61c7e791897b04ebd56a1b198db064f9 (patch)
tree272c7f6e035d5f57779c25a848360d56b90e8702 /sys/arch/amd64/cpu/mmu.c
parent6fbda065811b73e8092387fe3687c645b7da466e (diff)
kern/amd64: mp: Don't return on present entry
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/arch/amd64/cpu/mmu.c')
-rw-r--r--sys/arch/amd64/cpu/mmu.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arch/amd64/cpu/mmu.c b/sys/arch/amd64/cpu/mmu.c
index 48c096d..b709ee1 100644
--- a/sys/arch/amd64/cpu/mmu.c
+++ b/sys/arch/amd64/cpu/mmu.c
@@ -143,7 +143,9 @@ pmap_get_level(struct mmu_vas *vas, uintptr_t va, bool en_alloc, pagelevel_t lvl
while ((curlvl--) > lvl) {
index = pmap_get_index(va, curlvl);
if (ISSET(pmap[index], PTE_P)) {
- return PHYS_TO_VIRT(pmap[index] & PTE_ADDR_MASK);
+ pmap = PHYS_TO_VIRT(pmap[index] & PTE_ADDR_MASK);
+ --curlvl;
+ continue;
}
if (!en_alloc) {