24#if MOS_CONFIG(PML4_HUGE_CAPABLE)
25 if (platform_pml4e_is_huge(pml4e))
29 it->
range.
pfn = platform_pml4e_get_huge_pfn(pml4e);
41#if MOS_CONFIG(PML3_HUGE_CAPABLE)
58#if MOS_CONFIG(PML2_HUGE_CAPABLE)
90#define yield_range() \
93 it->range.vaddr_end = it->vaddr - 1; \
99#define _IS_IN_RANGE MOS_IN_RANGE(it->vaddr, it->start, it->end)
122 __builtin_unreachable();
145 bool changed =
false;
159 const pml2e_t *pml2e = &pml2.table[i];
171#if MOS_CONFIG(PML2_HUGE_CAPABLE)
177 bool changed =
false;
210#if MOS_CONFIG(PML3_HUGE_CAPABLE)
216 bool changed =
false;
vm_flags platform_pml3e_get_flags(const pml3e_t *pml3e)
vm_flags platform_pml4e_get_flags(const pml4e_t *pml4e)
vm_flags platform_pml1e_get_flags(const pml1e_t *pml1e)
pml1_t platform_pml2e_get_pml1(const pml2e_t *pml2)
pfn_t platform_pml1e_get_pfn(const pml1e_t *pml1e)
bool platform_pml1e_get_present(const pml1e_t *pml1)
vm_flags platform_pml2e_get_flags(const pml2e_t *pml2e)
pml3_t platform_pml4e_get_pml3(const pml4e_t *pml4)
pml2_t platform_pml3e_get_pml2(const pml3e_t *pml3)
bool platform_pml3e_is_huge(const pml3e_t *pml3e)
pfn_t platform_pml2e_get_huge_pfn(const pml2e_t *pml2)
bool platform_pml2e_is_huge(const pml2e_t *pml2e)
pfn_t platform_pml3e_get_huge_pfn(const pml3e_t *pml3)
#define MOS_UNREACHABLE()
void pagetable_iter_init(pagetable_iter_t *it, pgd_t pgd, ptr_t vaddr, ptr_t end)
Initialize a pagetable iterator.
pagetable_iter_range_t * pagetable_iter_next(pagetable_iter_t *it)
Get the next page table range.
static void pagetable_iterator_start_current_range(pagetable_iter_t *it, pml5_t *pml5, pml4_t *pml4, pml3_t *pml3, pml2_t *pml2, pml1_t *pml1)
pml1e_t * pml1_entry(pml1_t pml1, ptr_t vaddr)
bool pml2e_is_present(const pml2e_t *pml2e)
pml2e_t * pml2_entry(pml2_t pml2, ptr_t vaddr)
bool pml3e_is_present(const pml3e_t *pml3e)
pml3e_t * pml3_entry(pml3_t pml3, ptr_t vaddr)
pml4e_t * pml4_entry(pml4_t pml4, ptr_t vaddr)
bool pml4e_is_present(const pml4e_t *pml4e)
#define pml1_index(vaddr)
#define memzero(ptr, size)
pagetable_iter_range_t range