x86_64: dynamically compute where kernel VA starts when dumping ptables.
authorSimon Gerber <simon.gerber@inf.ethz.ch>
Mon, 12 Jan 2015 16:15:36 +0000 (17:15 +0100)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Mon, 12 Jan 2015 16:32:33 +0000 (17:32 +0100)
kernel/arch/x86_64/page_mappings_arch.c

index 6d1ceb1..31c1652 100644 (file)
@@ -432,7 +432,9 @@ void paging_dump_tables(struct dcb *dispatcher)
     lvaddr_t root_pt = local_phys_to_mem(dispatcher->vspace);
 
     // loop over pdpts
-    for (int pdpt_index = 0; pdpt_index < X86_64_PTABLE_SIZE-1; pdpt_index++) {
+    size_t kernel_pml4e = X86_64_PML4_BASE(X86_64_MEMORY_OFFSET);
+    printk(LOG_NOTE, "1st kernel pml4e: %zu\n", kernel_pml4e);
+    for (int pdpt_index = 0; pdpt_index < kernel_pml4e; pdpt_index++) {
 
         union x86_64_pdir_entry *pdpt = (union x86_64_pdir_entry *)root_pt + pdpt_index;
         if (!pdpt->raw) { continue; }