Author: kib
Date: Mon Dec 17 05:18:16 2012
New Revision: 244339
URL: http://svnweb.freebsd.org/changeset/base/244339

Log:
  MFC r244077:
  Add amd64-specific ddb command "show pte".  The command displays the
  hierarchy of the page table entries which map the specified address.

Modified:
  stable/9/sys/amd64/amd64/pmap.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/amd64/amd64/pmap.c
==============================================================================
--- stable/9/sys/amd64/amd64/pmap.c     Mon Dec 17 05:15:51 2012        
(r244338)
+++ stable/9/sys/amd64/amd64/pmap.c     Mon Dec 17 05:18:16 2012        
(r244339)
@@ -5462,3 +5462,46 @@ pmap_align_superpage(vm_object_t object,
        else
                *addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset;
 }
+
+#include "opt_ddb.h"
+#ifdef DDB
+#include <ddb/ddb.h>
+
+DB_SHOW_COMMAND(pte, pmap_print_pte)
+{
+       pmap_t pmap;
+       pml4_entry_t *pml4;
+       pdp_entry_t *pdp;
+       pd_entry_t *pde;
+       pt_entry_t *pte;
+       vm_offset_t va;
+
+       if (have_addr) {
+               va = (vm_offset_t)addr;
+               pmap = PCPU_GET(curpmap); /* XXX */
+       } else {
+               db_printf("show pte addr\n");
+               return;
+       }
+       pml4 = pmap_pml4e(pmap, va);
+       db_printf("VA %#016lx pml4e %#016lx", va, *pml4);
+       if ((*pml4 & PG_V) == 0) {
+               db_printf("\n");
+               return;
+       }
+       pdp = pmap_pml4e_to_pdpe(pml4, va);
+       db_printf(" pdpe %#016lx", *pdp);
+       if ((*pdp & PG_V) == 0 || (*pdp & PG_PS) != 0) {
+               db_printf("\n");
+               return;
+       }
+       pde = pmap_pdpe_to_pde(pdp, va);
+       db_printf(" pde %#016lx", *pde);
+       if ((*pde & PG_V) == 0 || (*pde & PG_PS) != 0) {
+               db_printf("\n");
+               return;
+       }
+       pte = pmap_pde_to_pte(pde, va);
+       db_printf(" pte %#016lx\n", *pte);
+}
+#endif
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to