Kernel: Fix 64 bit page table range reservation from lower->higher half

This commit is contained in:
2026-05-06 15:05:02 +03:00
parent 443be800b7
commit d2e21f9380

View File

@@ -743,8 +743,7 @@ namespace Kernel
paddr_t PageTable::physical_address_of(vaddr_t addr) const paddr_t PageTable::physical_address_of(vaddr_t addr) const
{ {
uint64_t page_data = get_page_data(addr); return get_page_data(addr) & s_page_addr_mask;
return page_data & s_page_addr_mask;
} }
bool PageTable::reserve_page(vaddr_t vaddr, bool only_free, bool invalidate) bool PageTable::reserve_page(vaddr_t vaddr, bool only_free, bool invalidate)
@@ -875,7 +874,7 @@ namespace Kernel
{ {
if (!is_canonical(vaddr + page * PAGE_SIZE)) if (!is_canonical(vaddr + page * PAGE_SIZE))
{ {
vaddr = canonicalize(uncanonicalize(vaddr) + page * PAGE_SIZE); vaddr = canonicalize(uncanonicalize(vaddr + page * PAGE_SIZE));
valid = false; valid = false;
break; break;
} }