/* * Copyright (c) 2026, Chloe M. * Provided under the BSD-3 clause. * * Description: Platform MMU HAL interface * Author: Chloe M. */ #ifndef _HAL_MMU_H_ #define _HAL_MMU_H_ 1 #include #include #include #include /* * Represents valid page sizes that can be mapped * with. */ typedef enum { PAGESIZE_4K } MMU_PAGESIZE; /* * Read the current virtual address space into an * MMU_VAS descriptor. * * @Result: Result is written here */ VOID HalMmuReadVas(MMU_VAS *Result); /* * Write a virtual address space into the current context * from an MMU_VAS descriptor * * @Vas: VAS to write to current context */ VOID HalMmuWriteVas(const MMU_VAS *Vas); /* * Map a single page of memory * * @Vas: Virtual address space to map within * @VirtualBase: Virtual address base to map * @Prot: Protection flags * @PageSize: Pagesize to map as */ PT_STATUS HalMmuMapPage( MMU_VAS *Vas, UPTR VirtualBase, UPTR PhysicalBase, MM_PROT Prot, MMU_PAGESIZE PageSize ); /* * Unmap a single page of memory * * @Vas: Virtual address space to unmap within * @VirtualBase: Virtual address to unmap * @PageSize: Page size to unmap */ PT_STATUS HalMmuUnmapPage( MMU_VAS *Vas, UPTR VirtualBase, MMU_PAGESIZE PageSize ); #endif /* !_HAL_MMU_H_ */