4 #include <geekos/ktypes.h>
5 #include <geekos/vmm.h>
8 #include <geekos/vmm_mem.h>
9 #include <geekos/vmm_util.h>
11 #define MAX_PAGE_TABLE_ENTRIES 1024
12 #define MAX_PAGE_DIR_ENTRIES 1024
15 #define PAGE_DIRECTORY_INDEX(x) ((((uint_t)x) >> 22) & 0x3ff)
16 #define PAGE_TABLE_INDEX(x) ((((uint_t)x) >> 12) & 0x3ff)
17 #define PAGE_OFFSET(x) ((((uint_t)x) & 0xfff))
19 #define PAGE_ALLIGNED_ADDR(x) (((uint_t) (x)) >> 12)
20 #define PAGE_ADDR(x) (PAGE_ALLIGNED_ADDR(x) << 12)
36 uint_t large_pages : 1;
37 uint_t global_page : 1;
39 uint_t pt_base_addr : 20;
48 uint_t global_page : 1;
50 uint_t page_base_addr : 20;
54 pde_t * generate_guest_page_tables(vmm_mem_layout_t * layout, vmm_mem_list_t * list);
57 void PrintDebugPageTables(pde_t * pde);