20#define kPageMax (0x200)
24#define kPageAlign (0x1000)
28#define kPageSize (0x1000)
33#define c16KBPage 0b000
38#define c512BPage 0b101
39#define c256BPage 0b110
40#define c128BPage 0b111
44#define cPageMAll {0b000, 0b000}
45#define cPageMToMax(M) {M, 0b000}
46#define cPageMaxToM(M) {0b000, M}
47#define cPageMToN(M, N) {M, N}
50struct PACKED PTE_4KB final {
63 UInt64 PhysicalAddress : 36;
71 enum class ControlRegisterBits {
72 ProtectedModeEnable = 0,
73 MonitorCoProcessor = 1,
85 inline UInt8 control_register_cast(ControlRegisterBits reg) {
86 return static_cast<UInt8>(reg);
91 PTE_4KB
ALIGN(kPageAlign) fEntries[kPageMax];
99typedef HAL::PTE_4KB PTE;
100typedef HAL::PDE_4KB PDE;
EXTERN_C void hal_flush_tlb()
Flush TLB.
Definition HalVirtualMemory.cc:44
Definition HalDescriptorLoader.cc:12
Hardware Abstraction Layer.
Definition ArchKit.h:62
auto mm_free_bitmap(VoidPtr ptr) -> Bool
Free Bitmap, and mark it as absent.
Definition BitMapMgr.cc:199
auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, SizeT pad) -> VoidPtr
Allocate a new page to be used by the OS.
Definition BitMapMgr.cc:181
UPS inline definitions.
Definition Device.h:12
__SIZE_TYPE__ SizeT
Definition Config.h:60
__UINT8_TYPE__ UInt8
Definition Config.h:55
void * VoidPtr
Definition Config.h:33
bool Boolean
Definition Config.h:49
__UINT64_TYPE__ UInt64
Definition Config.h:48
bool Bool
Definition Config.h:50