ptos/amd64+hal: Add page unmap interface

Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
2026-07-11 05:18:36 -04:00
parent 770ffe39ac
commit e03a6d0e91
2 changed files with 39 additions and 0 deletions
+27
View File
@@ -231,3 +231,30 @@ HalMmuMapPage(
MdTlbFlushSingle(VirtualBase); MdTlbFlushSingle(VirtualBase);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
PT_STATUS
HalMmuUnmapPage(MMU_VAS *Vas, UPTR VirtualBase, MMU_PAGESIZE PageSize)
{
UPTR *PageTable;
USIZE PageTableIndex;
if (Vas == NULL) {
return STATUS_INVALID_PARAM;
}
if (!MmuPageSizeValid(PageSize)) {
return STATUS_INVALID_PARAM;
}
PageTable = MmuPageMapExtract(Vas, VirtualBase, PAGEMAP_PML1, false);
if (PageTable == NULL) {
return STATUS_NOT_FOUND;
}
PageTableIndex = MmuPageMapIndex(VirtualBase, PAGEMAP_PML1);
/* Unmap and flush the TLB */
PageTable[PageTableIndex] = 0;
MdTlbFlushSingle(VirtualBase);
return STATUS_SUCCESS;
}
+12
View File
@@ -52,4 +52,16 @@ PT_STATUS HalMmuMapPage(
MMU_PAGESIZE PageSize 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_ */ #endif /* !_HAL_MMU_H_ */