VMM - get_page gets 2mb pages
This commit is contained in:
parent
69022cadd5
commit
f81e5cd8b0
@ -39,7 +39,10 @@ int page_exists(void *P4, uintptr_t addr)
|
||||
uintptr_t vmm_get_page(void *P4, uintptr_t addr)
|
||||
{
|
||||
if(page_exists(P4, addr))
|
||||
return P1e(P4, addr).value;
|
||||
if(P2e(P4, addr).huge)
|
||||
return P2e(P4, addr).value;
|
||||
else
|
||||
return P1e(P4, addr).value;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
@ -62,6 +62,15 @@ TEST(get_page_fails_if_PTE_not_present)
|
||||
|
||||
ASSERT_EQ_PTR(ret, -1);
|
||||
}
|
||||
TEST(get_page_gets_2mb_pages)
|
||||
{
|
||||
p4[1] = (uintptr_t)p3; p4[1] |= PAGE_PRESENT;
|
||||
p3[2] = (uintptr_t)p2; p3[2] |= PAGE_PRESENT;
|
||||
p2[3] = 0x1234567890A00000 | PAGE_HUGE | PAGE_PRESENT;
|
||||
|
||||
uintptr_t ret = vmm_get_page(p4, ADDR1234);
|
||||
ASSERT_EQ_PTR(ret, 0x1234567890A00000 | PAGE_HUGE | PAGE_PRESENT);
|
||||
}
|
||||
|
||||
TEST(set_page_sets_page)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user