feat: No more kernel page table switching upon interrupt.
[lunaix-os.git] / lunaix-os / kernel / mm / vmm.c
index 40c8be5885ffdf332667a82d9900a87a06de9473..5e407ff52915656a412eabb3c4a837e1c9d1b8a3 100644 (file)
@@ -258,14 +258,16 @@ vmm_v2p(void* va)
 }
 
 void*
 }
 
 void*
-vmm_mount_pd(void* pde) {
+vmm_mount_pd(uintptr_t mnt, void* pde) {
     x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR;
     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*
 }
 
 void*
-vmm_unmount_pd() {
+vmm_unmount_pd(uintptr_t mnt) {
     x86_page_table* l1pt = (x86_page_table*)L1_BASE_VADDR;
     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
 }
\ No newline at end of file