VMM - free_page deos not unset P2 entry if not asked to
This commit is contained in:
parent
3134a1d6ad
commit
992930d293
@ -83,6 +83,8 @@ void free_page(void *P4, uintptr_t addr, int free)
|
|||||||
return;
|
return;
|
||||||
P1e(P4, addr).value = 0;
|
P1e(P4, addr).value = 0;
|
||||||
|
|
||||||
|
if(!free) return;
|
||||||
|
|
||||||
union PTE *pt;
|
union PTE *pt;
|
||||||
|
|
||||||
pt = PT(P2e(P4, addr).value);
|
pt = PT(P2e(P4, addr).value);
|
||||||
|
@ -146,3 +146,12 @@ TEST(free_page_unsets_P2_entry_if_P1_is_empty)
|
|||||||
|
|
||||||
ASSERT_EQ_PTR(p2[3], 0);
|
ASSERT_EQ_PTR(p2[3], 0);
|
||||||
}
|
}
|
||||||
|
TEST(free_page_does_not_unset_P2_entry_if_not_asked_to)
|
||||||
|
{
|
||||||
|
BUILD_PT(1,2,3);
|
||||||
|
p1[4] = PAGE_PRESENT;
|
||||||
|
|
||||||
|
free_page(p4, ADDR1234, 0);
|
||||||
|
|
||||||
|
ASSERT_NEQ_PTR(p2[3], 0);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user