Author: ian
Date: Thu Jan  9 18:51:57 2014
New Revision: 260490
URL: http://svnweb.freebsd.org/changeset/base/260490

Log:
  Add a function to print the contents of the static device mapping table,
  and invoke it for bootverbose logging, and also from a new DDB command,
  "show devmap".  Also tweak the format string for the bootverbose output
  of physical memory chunks to get the leading zeros in the hex values.

Modified:
  head/sys/arm/arm/devmap.c
  head/sys/arm/arm/machdep.c

Modified: head/sys/arm/arm/devmap.c
==============================================================================
--- head/sys/arm/arm/devmap.c   Thu Jan  9 18:28:58 2014        (r260489)
+++ head/sys/arm/arm/devmap.c   Thu Jan  9 18:51:57 2014        (r260490)
@@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$");
  * Routines for mapping device memory.
  */
 
+#include "opt_ddb.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <vm/vm.h>
@@ -54,6 +56,36 @@ static u_int                 akva_devmap_idx;
 static vm_offset_t             akva_devmap_vaddr = ARM_VECTORS_HIGH;
 
 /*
+ * Print the contents of the static mapping table using the provided 
printf-like
+ * output function (which will be either printf or db_printf).
+ */
+static void
+devmap_dump_table(int (*prfunc)(const char *, ...))
+{
+       const struct arm_devmap_entry *pd;
+
+       if (devmap_table == NULL || devmap_table[0].pd_size == 0) {
+               prfunc("No static device mappings.\n");
+               return;
+       }
+
+       prfunc("Static device mappings:\n");
+       for (pd = devmap_table; pd->pd_size != 0; ++pd) {
+               prfunc("  0x%08x - 0x%08x mapped at VA 0x%08x\n",
+                   pd->pd_pa, pd->pd_pa + pd->pd_size - 1, pd->pd_va);
+       }
+}
+
+/*
+ * Print the contents of the static mapping table.  Used for bootverbose.
+ */
+void
+arm_devmap_print_table()
+{
+       devmap_dump_table(printf);
+}
+
+/*
  * Return the "last" kva address used by the registered devmap table.  It's
  * actually the lowest address used by the static mappings, i.e., the address 
of
  * the first unusable byte of KVA.
@@ -266,3 +298,13 @@ pmap_unmapdev(vm_offset_t va, vm_size_t 
        kva_free(va, origsize);
 }
 
+#ifdef DDB
+#include <ddb/ddb.h>
+
+DB_SHOW_COMMAND(devmap, db_show_devmap)
+{
+       devmap_dump_table(db_printf);
+}
+
+#endif /* DDB */
+

Modified: head/sys/arm/arm/machdep.c
==============================================================================
--- head/sys/arm/arm/machdep.c  Thu Jan  9 18:28:58 2014        (r260489)
+++ head/sys/arm/arm/machdep.c  Thu Jan  9 18:51:57 2014        (r260490)
@@ -379,10 +379,10 @@ cpu_startup(void *dummy)
                        vm_paddr_t size;
 
                        size = phys_avail[indx + 1] - phys_avail[indx];
-                       printf("%#08jx - %#08jx, %ju bytes (%ju pages)\n",
+                       printf("  0x%08jx - 0x%08jx, %ju KBytes (%ju pages)\n",
                            (uintmax_t)phys_avail[indx],
                            (uintmax_t)phys_avail[indx + 1] - 1,
-                           (uintmax_t)size, (uintmax_t)size / PAGE_SIZE);
+                           (uintmax_t)size / 1024, (uintmax_t)size / 
PAGE_SIZE);
                }
        }
 
@@ -392,6 +392,9 @@ cpu_startup(void *dummy)
            (uintmax_t)ptoa(cnt.v_free_count),
            (uintmax_t)ptoa(cnt.v_free_count) / 1048576);
 
+       if (bootverbose)
+               arm_devmap_print_table();
+
        bufinit();
        vm_pager_bufferinit();
        pcb->un_32.pcb32_und_sp = (u_int)thread0.td_kstack +
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to