Browse Source

Kernel: Clean up ensure_pte()

Andreas Kling 5 years ago
parent
commit
ba8275a48e
1 changed files with 14 additions and 23 deletions
  1. 14 23
      Kernel/VM/MemoryManager.cpp

+ 14 - 23
Kernel/VM/MemoryManager.cpp

@@ -234,34 +234,25 @@ PageTableEntry& MemoryManager::ensure_pte(PageDirectory& page_directory, Virtual
 #ifdef MM_DEBUG
 #ifdef MM_DEBUG
         dbgprintf("MM: PDE %u not present (requested for V%p), allocating\n", page_directory_index, vaddr.get());
         dbgprintf("MM: PDE %u not present (requested for V%p), allocating\n", page_directory_index, vaddr.get());
 #endif
 #endif
-        if (page_directory_table_index == 3 && page_directory_index < 4) {
-            ASSERT_NOT_REACHED();
-        } else {
-            auto page_table = allocate_supervisor_physical_page();
+        auto page_table = allocate_supervisor_physical_page();
 #ifdef MM_DEBUG
 #ifdef MM_DEBUG
-            dbgprintf("MM: PD K%p (%s) at P%p allocated page table #%u (for V%p) at P%p\n",
-                &page_directory,
-                &page_directory == m_kernel_page_directory ? "Kernel" : "User",
-                page_directory.cr3(),
-                page_directory_index,
-                vaddr.get(),
-                page_table->paddr().get());
+        dbgprintf("MM: PD K%p (%s) at P%p allocated page table #%u (for V%p) at P%p\n",
+            &page_directory,
+            &page_directory == m_kernel_page_directory ? "Kernel" : "User",
+            page_directory.cr3(),
+            page_directory_index,
+            vaddr.get(),
+            page_table->paddr().get());
 #endif
 #endif
-            pde.set_page_table_base(page_table->paddr().get());
-            pde.set_user_allowed(true);
-            pde.set_present(true);
-            pde.set_writable(true);
-            pde.set_global(&page_directory == m_kernel_page_directory.ptr());
-            page_directory.m_physical_pages.set(page_directory_index, move(page_table));
-        }
+        pde.set_page_table_base(page_table->paddr().get());
+        pde.set_user_allowed(true);
+        pde.set_present(true);
+        pde.set_writable(true);
+        pde.set_global(&page_directory == m_kernel_page_directory.ptr());
+        page_directory.m_physical_pages.set(page_directory_index, move(page_table));
     }
     }
 
 
-    //if (&page_directory != &kernel_page_directory() && page_directory_table_index != 3) {
     return quickmap_pt(PhysicalAddress((u32)pde.page_table_base()))[page_table_index];
     return quickmap_pt(PhysicalAddress((u32)pde.page_table_base()))[page_table_index];
-    //}
-
-    auto* phys_ptr = &pde.page_table_base()[page_table_index];
-    return *(PageTableEntry*)((u8*)phys_ptr + 0xc0000000);
 }
 }
 
 
 void MemoryManager::map_protected(VirtualAddress vaddr, size_t length)
 void MemoryManager::map_protected(VirtualAddress vaddr, size_t length)