X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/2e21eb2f39dd80aa166216381d5d402be943686e..86a9cfeadbbe180abf6c8bd8c64c86957fdacfeb:/lunaix-os/kernel/mm/vmm.c?ds=sidebyside diff --git a/lunaix-os/kernel/mm/vmm.c b/lunaix-os/kernel/mm/vmm.c index 40c8be5..5e407ff 100644 --- a/lunaix-os/kernel/mm/vmm.c +++ b/lunaix-os/kernel/mm/vmm.c @@ -258,14 +258,16 @@ vmm_v2p(void* va) } void* -vmm_mount_pd(void* pde) { +vmm_mount_pd(uintptr_t mnt, void* pde) { x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR; - l1pt->entry[(PD_MOUNT >> 22)] = NEW_L1_ENTRY(PG_PREM_RW, pde); - return PD_MOUNT; + l1pt->entry[(mnt >> 22)] = NEW_L1_ENTRY(T_SELF_REF_PERM, pde); + cpu_invplg(mnt); + return mnt; } void* -vmm_unmount_pd() { +vmm_unmount_pd(uintptr_t mnt) { x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR; - l1pt->entry[(PD_MOUNT >> 22)] = 0; + l1pt->entry[(mnt >> 22)] = 0; + cpu_invplg(mnt); } \ No newline at end of file