3593c66e3d
Signed-off-by: Chloe M <chloe@mensia.org>
56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
/*
|
|
* 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 <ptapi/ptmm.h>
|
|
#include <ptapi/status.h>
|
|
#include <hal/vas.h>
|
|
#include <ptdef.h>
|
|
|
|
/*
|
|
* 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
|
|
);
|
|
|
|
#endif /* !_HAL_MMU_H_ */
|