#pragma once #include enum { kVMPageSize = 4096, kVMBlocksPerByte = 8, kVMMaxReservedRegions = 128, }; typedef struct { UInt64 base; Size size; } VMMemoryRegion; typedef struct { VMMemoryRegion GICD; VMMemoryRegion GICC; } GICRegion; typedef struct { VMMemoryRegion totalRAM; VMMemoryRegion reserved[kVMMaxReservedRegions]; UInt32 reservedCount; VMMemoryRegion UART; GICRegion GIC; } VMBootMemoryMap; void PMMInitialize(VMBootMemoryMap* bootMap); Pointer PMMAllocatePage(); void PMMFreePage(Address address);