sp1/amd64: mmu: Add function to unmap regions

Signed-off-by: Ian Moffett <ian@mirocom.org>
This commit is contained in:
2026-04-26 00:21:19 -04:00
parent a7577d1921
commit bd354fed8c
2 changed files with 34 additions and 0 deletions
+21
View File
@@ -267,3 +267,24 @@ mu_mmu_map(struct mmu_vfr *vfr, uintptr_t vma, uintptr_t pma,
md_tlb_flush(vma); md_tlb_flush(vma);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
status_t
mu_mmu_unmap(struct mmu_vfr *vfr, uintptr_t vma, pagesize_t ps)
{
uintptr_t *tbl;
size_t index;
if (vfr == NULL) {
return STATUS_INVALID_PARAM;
}
tbl = mmu_extract_level(vfr, vma, PAGELVL_PML1, false);
if (tbl == NULL) {
return STATUS_NOT_FOUND;
}
index = mmu_extract_index(vma, PAGELVL_PML1);
tbl[index] = 0;
md_tlb_flush(vma);
return STATUS_SUCCESS;
}
+13
View File
@@ -62,6 +62,19 @@ status_t mu_mmu_map(
pagesize_t ps pagesize_t ps
); );
/*
* Destroy a virtual memory mapping in the virtual
* fuck region
*
* @vfr: Virtual fuck region to unmap within
* @vma: Virtual memory address to unmap
* @ps: Pagesize of address to unmap
*/
status_t mu_mmu_unmap(
struct mmu_vfr *vfr, uintptr_t vma,
pagesize_t ps
);
/* /*
* Fork a VFR and clear out the lower half * Fork a VFR and clear out the lower half
* *