X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/48b4a227035048fdebcd32532deb7a857c6199ac..cd103ea1b3ff029cfc458b3913975b5600915341:/lunaix-os/kernel/mm/vmm.c diff --git a/lunaix-os/kernel/mm/vmm.c b/lunaix-os/kernel/mm/vmm.c index f791cc3..5e407ff 100644 --- a/lunaix-os/kernel/mm/vmm.c +++ b/lunaix-os/kernel/mm/vmm.c @@ -255,4 +255,19 @@ void* vmm_v2p(void* va) { return (void*)vmm_lookup(va).pa; +} + +void* +vmm_mount_pd(uintptr_t mnt, void* pde) { + x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR; + l1pt->entry[(mnt >> 22)] = NEW_L1_ENTRY(T_SELF_REF_PERM, pde); + cpu_invplg(mnt); + return mnt; +} + +void* +vmm_unmount_pd(uintptr_t mnt) { + x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR; + l1pt->entry[(mnt >> 22)] = 0; + cpu_invplg(mnt); } \ No newline at end of file