summaryrefslogtreecommitdiff
path: root/sys/arch/amd64/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/amd64/cpu')
-rw-r--r--sys/arch/amd64/cpu/mmu.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/arch/amd64/cpu/mmu.c b/sys/arch/amd64/cpu/mmu.c
index b709ee1..2be4b12 100644
--- a/sys/arch/amd64/cpu/mmu.c
+++ b/sys/arch/amd64/cpu/mmu.c
@@ -193,6 +193,27 @@ mu_pmap_map(struct mmu_vas *vas, uintptr_t pa, uintptr_t va,
}
int
+mu_pmap_unmap(struct mmu_vas *vas, uintptr_t va, pagesize_t ps)
+{
+ uintptr_t *pagetbl;
+ size_t index;
+
+ if (vas == NULL) {
+ return -EINVAL;
+ }
+
+ pagetbl = pmap_get_level(vas, va, false, PMAP_PML1);
+ if (pagetbl == NULL) {
+ return 0;
+ }
+
+ index = pmap_get_index(va, PMAP_PML1);
+ pagetbl[index] = 0;
+ pmap_invlpg(va);
+ return 0;
+}
+
+int
mu_pmap_readvas(struct mmu_vas *vas)
{
__asmv(