VMM - get_page gets 2mb pages
This commit is contained in:
parent
69022cadd5
commit
f81e5cd8b0
@ -39,6 +39,9 @@ int page_exists(void *P4, uintptr_t addr)
|
|||||||
uintptr_t vmm_get_page(void *P4, uintptr_t addr)
|
uintptr_t vmm_get_page(void *P4, uintptr_t addr)
|
||||||
{
|
{
|
||||||
if(page_exists(P4, addr))
|
if(page_exists(P4, addr))
|
||||||
|
if(P2e(P4, addr).huge)
|
||||||
|
return P2e(P4, addr).value;
|
||||||
|
else
|
||||||
return P1e(P4, addr).value;
|
return P1e(P4, addr).value;
|
||||||
else
|
else
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -62,6 +62,15 @@ TEST(get_page_fails_if_PTE_not_present)
|
|||||||
|
|
||||||
ASSERT_EQ_PTR(ret, -1);
|
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)
|
TEST(set_page_sets_page)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user