diff --git a/src/kernel/memory/vmm.c b/src/kernel/memory/vmm.c index 5282bf7..7167a2c 100644 --- a/src/kernel/memory/vmm.c +++ b/src/kernel/memory/vmm.c @@ -31,9 +31,8 @@ uintptr_t vmm_get_page(void *P4, uintptr_t addr) && P4e(P4, addr).present && P3e(P4, addr).present && P2e(P4, addr).present - && P1e(P4, addr).present ) - return MASK_FLAGS(P1e(P4, addr).value); + return P1e(P4, addr).value; else return -1; } diff --git a/src/kernel/memory/vmm.tt b/src/kernel/memory/vmm.tt index ef52590..a5553d9 100644 --- a/src/kernel/memory/vmm.tt +++ b/src/kernel/memory/vmm.tt @@ -31,7 +31,7 @@ TEST(get_page_returns_correct_address) uintptr_t ret = vmm_get_page(p4, 0); - ASSERT_EQ_PTR(ret, 0x1234567890ABC000); + ASSERT_EQ_PTR(ret, 0x1234567890ABC000 | PAGE_PRESENT); } TEST(get_page_ignores_flags) { @@ -45,7 +45,7 @@ TEST(get_page_ignores_flags) uintptr_t ret = vmm_get_page(p4, 0); - ASSERT_EQ_PTR(ret, 0x1234567890ABC000); + ASSERT_EQ_PTR(ret, 0x1234567890ABC000 | PAGE_PRESENT); } TEST(get_page_works_for_different_address) { @@ -59,7 +59,7 @@ TEST(get_page_works_for_different_address) uintptr_t ret = vmm_get_page(p4, (1UL<<39)+(2UL<<30)+(3UL<<21)+(4UL<<12)); - ASSERT_EQ_PTR(ret, 0x34567890ABCDE000); + ASSERT_EQ_PTR(ret, 0x34567890ABCDE000 | PAGE_PRESENT); } TEST(get_page_fails_if_PTE_not_present) {