Expand description
Methods to construct page tables on x64.
Structs§
- Identity
MapBuilder - An IdentityMap Builder, which builds either a 4GB or 8GB identity map of the lower address space FUTURE: This logic can merged with the PageTableBuilder, rather than maintaining two implementations
- Mapped
Range - A memory range to be mapped in a page table, and the associated permissions The default permissions bits are present, R/W, executable
- Page
Table - A single page table at any level of the page table hierarchy
- Page
Table Builder - A builder for an x64 identity-mapped page table
- Page
Table Entry - An x64 page table entry
Enums§
- Entry
Level - The depth of an x64 page table
- Page
Table Entry Type
Constants§
- PAGE_
TABLE_ MAX_ BYTES - Maximum number of bytes needed to store an x64 identity map
- PAGE_
TABLE_ MAX_ COUNT - An upper bound on the number of page tables that will be built for an x64 identity map. The builder will greedily map the largest possible page size, a cap of 20 tables is more than enough for mapping a few gigabytes with mostly large pages, which is sufficient for all of the current use cases of the identity map builder
- X64_
1GB_ PAGE_ SIZE - Number of bytes in a 1GB page for X64.
- X64_
LARGE_ PAGE_ SIZE - Number of bytes in a large page for X64.
- X64_
PAGE_ SIZE - Number of bytes in a page for X64.
Functions§
- align_
up_ to_ 1_ gb_ page_ size - Align an address up to the start of the next 1GB page.
- align_
up_ to_ large_ page_ size - Align an address up to the start of the next large (2MB) page.
- align_
up_ to_ page_ size - Align an address up to the start of the next page.
- calculate_
pde_ table_ count - Calculate the number of PDE page tables required to identity map a given gpa and size.
- get_
amd64_ pte_ index - Get an AMD64 PTE index based on page table level.