introduce 3 new weak functions board_bdinfo, cpu_bdinfo and soc_bdinfo to allow
board, cpu and soc to print more information

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagn...@jcrosoft.com>
Acked-by: Mike Frysinger <vap...@gentoo.org>
Acked-by: Haavard Skinnemoen <haavard.skinnem...@atmel.com>
---
V4 -> V5
Rebase
 common/cmd_bdinfo.c     |  464 ++++++++---------------------------------------
 include/bdinfo.h        |   49 +++++
 lib_arm/Makefile        |    1 +
 lib_arm/bdinfo.c        |   50 +++++
 lib_avr32/Makefile      |    1 +
 lib_avr32/bdinfo.c      |   44 +++++
 lib_blackfin/Makefile   |    1 +
 lib_blackfin/bdinfo.c   |   52 ++++++
 lib_i386/Makefile       |    1 +
 lib_i386/bdinfo.c       |   44 +++++
 lib_m68k/Makefile       |    1 +
 lib_m68k/bdinfo.c       |   72 ++++++++
 lib_microblaze/Makefile |    1 +
 lib_microblaze/bdinfo.c |   47 +++++
 lib_mips/Makefile       |    1 +
 lib_mips/bdinfo.c       |   44 +++++
 lib_nios/Makefile       |    1 +
 lib_nios/bdinfo.c       |   43 +++++
 lib_nios2/Makefile      |    1 +
 lib_nios2/bdinfo.c      |   51 +++++
 lib_ppc/Makefile        |    1 +
 lib_ppc/bdinfo.c        |  104 +++++++++++
 lib_sh/Makefile         |    1 +
 lib_sh/bdinfo.c         |   44 +++++
 lib_sparc/Makefile      |   13 +-
 lib_sparc/bdinfo.c      |   58 ++++++
 26 files changed, 798 insertions(+), 392 deletions(-)
 rewrite common/cmd_bdinfo.c (89%)
 create mode 100644 include/bdinfo.h
 create mode 100644 lib_arm/bdinfo.c
 create mode 100644 lib_avr32/bdinfo.c
 create mode 100644 lib_blackfin/bdinfo.c
 create mode 100644 lib_i386/bdinfo.c
 create mode 100644 lib_m68k/bdinfo.c
 create mode 100644 lib_microblaze/bdinfo.c
 create mode 100644 lib_mips/bdinfo.c
 create mode 100644 lib_nios/bdinfo.c
 create mode 100644 lib_nios2/bdinfo.c
 create mode 100644 lib_ppc/bdinfo.c
 create mode 100644 lib_sh/bdinfo.c
 create mode 100644 lib_sparc/bdinfo.c

diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
dissimilarity index 89%
index b230924..2609854 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -1,388 +1,76 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-/*
- * Boot support
- */
-#include <common.h>
-#include <command.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void print_num(const char *, ulong);
-
-#if !defined(CONFIG_ARM) || defined(CONFIG_CMD_NET)
-static void print_eth(int idx);
-#endif
-
-#ifndef CONFIG_ARM     /* PowerPC and other */
-static void print_lnum(const char *, u64);
-
-#ifdef CONFIG_PPC
-static void print_str(const char *, const char *);
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-       char buf[32];
-
-#ifdef DEBUG
-       print_num ("bd address",    (ulong)bd           );
-#endif
-       print_num ("memstart",      bd->bi_memstart     );
-       print_lnum ("memsize",      bd->bi_memsize      );
-       print_num ("flashstart",    bd->bi_flashstart   );
-       print_num ("flashsize",     bd->bi_flashsize    );
-       print_num ("flashoffset",   bd->bi_flashoffset  );
-       print_num ("sramstart",     bd->bi_sramstart    );
-       print_num ("sramsize",      bd->bi_sramsize     );
-#if defined(CONFIG_5xx)  || defined(CONFIG_8xx) || \
-    defined(CONFIG_8260) || defined(CONFIG_E500)
-       print_num ("immr_base",     bd->bi_immr_base    );
-#endif
-       print_num ("bootflags",     bd->bi_bootflags    );
-#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
-    defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
-    defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
-    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) ||        \
-    defined(CONFIG_440SP) || defined(CONFIG_440SPE)
-       print_str ("procfreq",      strmhz(buf, bd->bi_procfreq));
-       print_str ("plb_busfreq",   strmhz(buf, bd->bi_plb_busfreq));
-#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || 
defined(CONFIG_XILINX_405) || \
-    defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) 
|| \
-    defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
-       print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
-#endif
-#else  /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
-#if defined(CONFIG_CPM2)
-       print_str ("vco",           strmhz(buf, bd->bi_vco));
-       print_str ("sccfreq",       strmhz(buf, bd->bi_sccfreq));
-       print_str ("brgfreq",       strmhz(buf, bd->bi_brgfreq));
-#endif
-       print_str ("intfreq",       strmhz(buf, bd->bi_intfreq));
-#if defined(CONFIG_CPM2)
-       print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
-#endif
-       print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
-#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
-#if defined(CONFIG_MPC8220)
-       print_str ("inpfreq",       strmhz(buf, bd->bi_inpfreq));
-       print_str ("flbfreq",       strmhz(buf, bd->bi_flbfreq));
-       print_str ("pcifreq",       strmhz(buf, bd->bi_pcifreq));
-       print_str ("vcofreq",       strmhz(buf, bd->bi_vcofreq));
-       print_str ("pevfreq",       strmhz(buf, bd->bi_pevfreq));
-#endif
-
-       print_eth(0);
-#if defined(CONFIG_HAS_ETH1)
-       print_eth(1);
-#endif
-#if defined(CONFIG_HAS_ETH2)
-       print_eth(2);
-#endif
-#if defined(CONFIG_HAS_ETH3)
-       print_eth(3);
-#endif
-#if defined(CONFIG_HAS_ETH4)
-       print_eth(4);
-#endif
-#if defined(CONFIG_HAS_ETH5)
-       print_eth(5);
-#endif
-
-#ifdef CONFIG_HERMES
-       print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
-#endif
-       printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
-       printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
-       return 0;
-}
-
-#elif defined(CONFIG_NIOS) /* NIOS*/
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-
-       print_eth(0);
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#elif defined(CONFIG_NIOS2) /* Nios-II */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-
-       print_num ("mem start",         (ulong)bd->bi_memstart);
-       print_lnum ("mem size",         (u64)bd->bi_memsize);
-       print_num ("flash start",       (ulong)bd->bi_flashstart);
-       print_num ("flash size",        (ulong)bd->bi_flashsize);
-       print_num ("flash offset",      (ulong)bd->bi_flashoffset);
-
-#if defined(CONFIG_SYS_SRAM_BASE)
-       print_num ("sram start",        (ulong)bd->bi_sramstart);
-       print_num ("sram size",         (ulong)bd->bi_sramsize);
-#endif
-
-#if defined(CONFIG_CMD_NET)
-       print_eth(0);
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-#endif
-
-       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-#elif defined(CONFIG_MICROBLAZE) /* ! PPC, which leaves Microblaze */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-       print_num ("mem start      ",   (ulong)bd->bi_memstart);
-       print_lnum ("mem size       ",  (u64)bd->bi_memsize);
-       print_num ("flash start    ",   (ulong)bd->bi_flashstart);
-       print_num ("flash size     ",   (ulong)bd->bi_flashsize);
-       print_num ("flash offset   ",   (ulong)bd->bi_flashoffset);
-#if defined(CONFIG_SYS_SRAM_BASE)
-       print_num ("sram start     ",   (ulong)bd->bi_sramstart);
-       print_num ("sram size      ",   (ulong)bd->bi_sramsize);
-#endif
-#if defined(CONFIG_CMD_NET)
-       print_eth(0);
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-#endif
-       printf ("baudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
-       return 0;
-}
-
-#elif defined(CONFIG_SPARC)    /* SPARC */
-int do_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-
-#ifdef DEBUG
-       print_num("bd address             ", (ulong) bd);
-#endif
-       print_num("memstart               ", bd->bi_memstart);
-       print_lnum("memsize                ", bd->bi_memsize);
-       print_num("flashstart             ", bd->bi_flashstart);
-       print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
-       print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
-       printf("CONFIG_SYS_RELOC_MONITOR_BASE = 0x%lx (%d)\n", 
CONFIG_SYS_RELOC_MONITOR_BASE,
-              CONFIG_SYS_MONITOR_LEN);
-       printf("CONFIG_SYS_MALLOC_BASE        = 0x%lx (%d)\n", 
CONFIG_SYS_MALLOC_BASE,
-              CONFIG_SYS_MALLOC_LEN);
-       printf("CONFIG_SYS_INIT_SP_OFFSET     = 0x%lx (%d)\n", 
CONFIG_SYS_INIT_SP_OFFSET,
-              CONFIG_SYS_STACK_SIZE);
-       printf("CONFIG_SYS_PROM_OFFSET        = 0x%lx (%d)\n", 
CONFIG_SYS_PROM_OFFSET,
-              CONFIG_SYS_PROM_SIZE);
-       printf("CONFIG_SYS_GBL_DATA_OFFSET    = 0x%lx (%d)\n", 
CONFIG_SYS_GBL_DATA_OFFSET,
-              CONFIG_SYS_GBL_DATA_SIZE);
-
-#if defined(CONFIG_CMD_NET)
-       print_eth(0);
-       printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-#endif
-       printf("baudrate               = %6ld bps\n", bd->bi_baudrate);
-       return 0;
-}
-
-#elif defined(CONFIG_M68K) /* M68K */
-static void print_str(const char *, const char *);
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-       char buf[32];
-
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-#if defined(CONFIG_SYS_INIT_RAM_ADDR)
-       print_num ("sramstart",         (ulong)bd->bi_sramstart);
-       print_num ("sramsize",          (ulong)bd->bi_sramsize);
-#endif
-#if defined(CONFIG_SYS_MBAR)
-       print_num ("mbar",              bd->bi_mbar_base);
-#endif
-       print_str ("cpufreq",           strmhz(buf, bd->bi_intfreq));
-       print_str ("busfreq",           strmhz(buf, bd->bi_busfreq));
-#ifdef CONFIG_PCI
-       print_str ("pcifreq",           strmhz(buf, bd->bi_pcifreq));
-#endif
-#ifdef CONFIG_EXTRA_CLOCK
-       print_str ("flbfreq",           strmhz(buf, bd->bi_flbfreq));
-       print_str ("inpfreq",           strmhz(buf, bd->bi_inpfreq));
-       print_str ("vcofreq",           strmhz(buf, bd->bi_vcofreq));
-#endif
-#if defined(CONFIG_CMD_NET)
-       print_eth(0);
-#if defined(CONFIG_HAS_ETH1)
-       print_eth(1);
-#endif
-#if defined(CONFIG_HAS_ETH2)
-       print_eth(2);
-#endif
-#if defined(CONFIG_HAS_ETH3)
-       print_eth(3);
-#endif
-
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-#endif
-       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#elif defined(CONFIG_BLACKFIN)
-static void print_str(const char *, const char *);
-
-int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-       char buf[32];
-
-       printf("U-Boot      = %s\n", bd->bi_r_version);
-       printf("CPU         = %s\n", bd->bi_cpu);
-       printf("Board       = %s\n", bd->bi_board_name);
-       print_str("VCO",         strmhz(buf, bd->bi_vco));
-       print_str("CCLK",        strmhz(buf, bd->bi_cclk));
-       print_str("SCLK",        strmhz(buf, bd->bi_sclk));
-
-       print_num("boot_params", (ulong)bd->bi_boot_params);
-       print_num("memstart",    (ulong)bd->bi_memstart);
-       print_lnum("memsize",    (u64)bd->bi_memsize);
-       print_num("flashstart",  (ulong)bd->bi_flashstart);
-       print_num("flashsize",   (ulong)bd->bi_flashsize);
-       print_num("flashoffset", (ulong)bd->bi_flashoffset);
-
-       print_eth(0);
-       printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-       printf("baudrate    = %d bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#else /* ! PPC, which leaves MIPS */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-
-       print_num ("boot_params",       (ulong)bd->bi_boot_params);
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-
-       print_eth(0);
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-#endif  /* MIPS */
-
-#else  /* ARM */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-
-       print_num ("arch_number",       bd->bi_arch_number);
-       print_num ("env_t",             (ulong)bd->bi_env);
-       print_num ("boot_params",       (ulong)bd->bi_boot_params);
-
-       for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {
-               print_num("DRAM bank",  i);
-               print_num("-> start",   bd->bi_dram[i].start);
-               print_num("-> size",    bd->bi_dram[i].size);
-       }
-
-#if defined(CONFIG_CMD_NET)
-       print_eth(0);
-       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
-#endif
-       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
-
-static void print_num(const char *name, ulong value)
-{
-       printf ("%-12s= 0x%08lX\n", name, value);
-}
-
-#if !defined(CONFIG_ARM) || defined(CONFIG_CMD_NET)
-static void print_eth(int idx)
-{
-       char name[10], *val;
-       if (idx)
-               sprintf(name, "eth%iaddr", idx);
-       else
-               strcpy(name, "ethaddr");
-       val = getenv(name);
-       if (!val)
-               val = "(not set)";
-       printf("%-12s= %s\n", name, val);
-}
-#endif
-
-#ifndef CONFIG_ARM
-static void print_lnum(const char *name, u64 value)
-{
-       printf ("%-12s= 0x%.8llX\n", name, value);
-}
-#endif
-
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_BLACKFIN)
-static void print_str(const char *name, const char *str)
-{
-       printf ("%-12s= %6s MHz\n", name, str);
-}
-#endif /* CONFIG_PPC */
-
-
-/* -------------------------------------------------------------------- */
-
-U_BOOT_CMD(
-       bdinfo, 1,      1,      do_bdinfo,
-       "print Board Info structure",
-       NULL
-);
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+void board_bdinfo(cmd_tbl_t *, int, int, char **) __attribute__((weak));
+void cpu_bdinfo(cmd_tbl_t *, int, int, char **) __attribute__((weak));
+void soc_bdinfo(cmd_tbl_t *, int, int, char **) __attribute__((weak));
+
+int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+
+       /* call arch bdinfo */
+       arch_bdinfo(cmdtp, flag, argc, argv);
+
+       /* call cpu bdinfo */
+       if (cpu_bdinfo) {
+               printf("CPU Info\n");
+               cpu_bdinfo(cmdtp, flag, argc, argv);
+       }
+
+       /* call soc bdinfo */
+       if (soc_bdinfo) {
+               printf("SOC Info\n");
+               soc_bdinfo(cmdtp, flag, argc, argv);
+       }
+
+       /* call board bdinfo */
+       if (board_bdinfo) {
+               printf("Board Info\n");
+               board_bdinfo(cmdtp, flag, argc, argv);
+       }
+
+       return 0;
+}
+
+void print_eth(int idx)
+{
+       char name[10], *val;
+       if (idx)
+               sprintf(name, "eth%iaddr", idx);
+       else
+               strcpy(name, "ethaddr");
+       val = getenv(name);
+       if (!val)
+               val = "(not set)";
+       printf("%-12s= %s\n", name, val);
+}
+
+U_BOOT_CMD(
+       bdinfo, 1,      1,      do_bdinfo,
+       "print Board Info structure",
+       NULL
+);
diff --git a/include/bdinfo.h b/include/bdinfo.h
new file mode 100644
index 0000000..cc44544
--- /dev/null
+++ b/include/bdinfo.h
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright 2008
+ * Jean-Christophe PLAGNIOL-VILLARD <plagn...@jcrosoft.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.        See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _BDINFO_H_
+#define _BDINFO_H_
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char **argv);
+void board_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char **argv);
+void cpu_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char **argv);
+void soc_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char **argv);
+
+static inline void print_num(const char *name, ulong value)
+{
+       printf ("%-12s= 0x%08lX\n", name, value);
+}
+
+static inline void print_lnum(const char *name, u64 value)
+{
+       printf ("%-12s= 0x%.8llX\n", name, value);
+}
+
+static inline void print_str(const char *name, const char *str)
+{
+       printf ("%-12s= %6s MHz\n", name, str);
+}
+
+void print_eth(int idx);
+
+#endif /* _BDINFO_H_ */
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index c8795b2..1f36f58 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -32,6 +32,7 @@ SOBJS-y       += _modsi3.o
 SOBJS-y        += _udivsi3.o
 SOBJS-y        += _umodsi3.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_arm/bdinfo.c b/lib_arm/bdinfo.c
new file mode 100644
index 0000000..7065bbb
--- /dev/null
+++ b/lib_arm/bdinfo.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       int i;
+       bd_t *bd = gd->bd;
+
+       print_num ("arch_number",       bd->bi_arch_number);
+       print_num ("env_t",             (ulong)bd->bi_env);
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+
+       for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {
+               print_num("DRAM bank",  i);
+               print_num("-> start",   bd->bi_dram[i].start);
+               print_num("-> size",    bd->bi_dram[i].size);
+       }
+
+#if defined(CONFIG_CMD_NET)
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_avr32/Makefile b/lib_avr32/Makefile
index 37b8051..856d450 100644
--- a/lib_avr32/Makefile
+++ b/lib_avr32/Makefile
@@ -29,6 +29,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        += memset.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += interrupts.o
diff --git a/lib_avr32/bdinfo.c b/lib_avr32/bdinfo.c
new file mode 100644
index 0000000..fac5b33
--- /dev/null
+++ b/lib_avr32/bdinfo.c
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_blackfin/Makefile b/lib_blackfin/Makefile
index 46ef7f3..8c6d13c 100644
--- a/lib_blackfin/Makefile
+++ b/lib_blackfin/Makefile
@@ -36,6 +36,7 @@ SOBJS-y       += memcpy.o
 SOBJS-y        += memmove.o
 SOBJS-y        += memset.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += boot.o
 COBJS-y        += cache.o
diff --git a/lib_blackfin/bdinfo.c b/lib_blackfin/bdinfo.c
new file mode 100644
index 0000000..c5a4ed0
--- /dev/null
+++ b/lib_blackfin/bdinfo.c
@@ -0,0 +1,52 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       char buf[32];
+
+       printf("U-Boot      = %s\n", bd->bi_r_version);
+       printf("CPU         = %s\n", bd->bi_cpu);
+       printf("Board       = %s\n", bd->bi_board_name);
+       print_str("VCO",         strmhz(buf, bd->bi_vco));
+       print_str("CCLK",        strmhz(buf, bd->bi_cclk));
+       print_str("SCLK",        strmhz(buf, bd->bi_sclk));
+
+       print_num("boot_params", (ulong)bd->bi_boot_params);
+       print_num("memstart",    (ulong)bd->bi_memstart);
+       print_lnum("memsize",    (u64)bd->bi_memsize);
+       print_num("flashstart",  (ulong)bd->bi_flashstart);
+       print_num("flashsize",   (ulong)bd->bi_flashsize);
+       print_num("flashoffset", (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_i386/Makefile b/lib_i386/Makefile
index ec6f236..3f8a831 100644
--- a/lib_i386/Makefile
+++ b/lib_i386/Makefile
@@ -29,6 +29,7 @@ SOBJS-y       += bios.o
 SOBJS-y        += bios_pci.o
 SOBJS-y        += realmode_switch.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += bios_setup.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
diff --git a/lib_i386/bdinfo.c b/lib_i386/bdinfo.c
new file mode 100644
index 0000000..fac5b33
--- /dev/null
+++ b/lib_i386/bdinfo.c
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_m68k/Makefile b/lib_m68k/Makefile
index 6db35ed..f11b601 100644
--- a/lib_m68k/Makefile
+++ b/lib_m68k/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_m68k/bdinfo.c b/lib_m68k/bdinfo.c
new file mode 100644
index 0000000..65d582b
--- /dev/null
+++ b/lib_m68k/bdinfo.c
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       char buf[32];
+
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+#if defined(CONFIG_SYS_INIT_RAM_ADDR)
+       print_num ("sramstart",         (ulong)bd->bi_sramstart);
+       print_num ("sramsize",          (ulong)bd->bi_sramsize);
+#endif
+#if defined(CONFIG_SYS_MBAR)
+       print_num ("mbar",              bd->bi_mbar_base);
+#endif
+       print_str ("cpufreq",           strmhz(buf, bd->bi_intfreq));
+       print_str ("busfreq",           strmhz(buf, bd->bi_busfreq));
+#ifdef CONFIG_PCI
+       print_str ("pcifreq",           strmhz(buf, bd->bi_pcifreq));
+#endif
+#ifdef CONFIG_EXTRA_CLOCK
+       print_str ("flbfreq",           strmhz(buf, bd->bi_flbfreq));
+       print_str ("inpfreq",           strmhz(buf, bd->bi_inpfreq));
+       print_str ("vcofreq",           strmhz(buf, bd->bi_vcofreq));
+#endif
+#if defined(CONFIG_CMD_NET)
+       print_eth(0);
+#if defined(CONFIG_HAS_ETH1)
+       print_eth(1);
+#endif
+#if defined(CONFIG_HAS_ETH2)
+       print_eth(2);
+#endif
+#if defined(CONFIG_HAS_ETH3)
+       print_eth(3);
+#endif
+
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_microblaze/Makefile b/lib_microblaze/Makefile
index 9b0f296..b9c5088 100644
--- a/lib_microblaze/Makefile
+++ b/lib_microblaze/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_microblaze/bdinfo.c b/lib_microblaze/bdinfo.c
new file mode 100644
index 0000000..fa7c62a
--- /dev/null
+++ b/lib_microblaze/bdinfo.c
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       print_num ("mem start      ",   (ulong)bd->bi_memstart);
+       print_lnum ("mem size       ",  (u64)bd->bi_memsize);
+       print_num ("flash start    ",   (ulong)bd->bi_flashstart);
+       print_num ("flash size     ",   (ulong)bd->bi_flashsize);
+       print_num ("flash offset   ",   (ulong)bd->bi_flashoffset);
+#if defined(CONFIG_SYS_SRAM_BASE)
+       print_num ("sram start     ",   (ulong)bd->bi_sramstart);
+       print_num ("sram size      ",   (ulong)bd->bi_sramsize);
+#endif
+#if defined(CONFIG_CMD_NET)
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+       printf ("baudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
+}
diff --git a/lib_mips/Makefile b/lib_mips/Makefile
index 7967e58..5dc75c0 100644
--- a/lib_mips/Makefile
+++ b/lib_mips/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 ifeq ($(CONFIG_QEMU_MIPS),y)
 COBJS-y        += bootm_qemu_mips.o
diff --git a/lib_mips/bdinfo.c b/lib_mips/bdinfo.c
new file mode 100644
index 0000000..fac5b33
--- /dev/null
+++ b/lib_mips/bdinfo.c
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_nios/Makefile b/lib_nios/Makefile
index f66e989..b665eb7 100644
--- a/lib_nios/Makefile
+++ b/lib_nios/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_nios/bdinfo.c b/lib_nios/bdinfo.c
new file mode 100644
index 0000000..637bd4f
--- /dev/null
+++ b/lib_nios/bdinfo.c
@@ -0,0 +1,43 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_nios2/Makefile b/lib_nios2/Makefile
index b69bc38..fd9a60e 100644
--- a/lib_nios2/Makefile
+++ b/lib_nios2/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        += cache.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += divmod.o
diff --git a/lib_nios2/bdinfo.c b/lib_nios2/bdinfo.c
new file mode 100644
index 0000000..def6a4b
--- /dev/null
+++ b/lib_nios2/bdinfo.c
@@ -0,0 +1,51 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("mem start",         (ulong)bd->bi_memstart);
+       print_lnum ("mem size",         (u64)bd->bi_memsize);
+       print_num ("flash start",       (ulong)bd->bi_flashstart);
+       print_num ("flash size",        (ulong)bd->bi_flashsize);
+       print_num ("flash offset",      (ulong)bd->bi_flashoffset);
+
+#if defined(CONFIG_SYS_SRAM_BASE)
+       print_num ("sram start",        (ulong)bd->bi_sramstart);
+       print_num ("sram size",         (ulong)bd->bi_sramsize);
+#endif
+
+#if defined(CONFIG_CMD_NET)
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+
+       printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_ppc/Makefile b/lib_ppc/Makefile
index 60ea0c9..b53bf29 100644
--- a/lib_ppc/Makefile
+++ b/lib_ppc/Makefile
@@ -30,6 +30,7 @@ SOBJS-y       += ppcstring.o
 SOBJS-y        += ticks.o
 
 COBJS-y        += bat_rw.o
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_ppc/bdinfo.c b/lib_ppc/bdinfo.c
new file mode 100644
index 0000000..dac9d2b
--- /dev/null
+++ b/lib_ppc/bdinfo.c
@@ -0,0 +1,104 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       char buf[32];
+
+#ifdef DEBUG
+       print_num ("bd address",    (ulong)bd           );
+#endif
+       print_num ("memstart",      bd->bi_memstart     );
+       print_lnum ("memsize",      bd->bi_memsize      );
+       print_num ("flashstart",    bd->bi_flashstart   );
+       print_num ("flashsize",     bd->bi_flashsize    );
+       print_num ("flashoffset",   bd->bi_flashoffset  );
+       print_num ("sramstart",     bd->bi_sramstart    );
+       print_num ("sramsize",      bd->bi_sramsize     );
+#if defined(CONFIG_5xx)  || defined(CONFIG_8xx) || \
+    defined(CONFIG_8260) || defined(CONFIG_E500)
+       print_num ("immr_base",     bd->bi_immr_base    );
+#endif
+       print_num ("bootflags",     bd->bi_bootflags    );
+#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
+    defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
+    defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
+    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) ||        \
+    defined(CONFIG_440SP) || defined(CONFIG_440SPE)
+       print_str ("procfreq",      strmhz(buf, bd->bi_procfreq));
+       print_str ("plb_busfreq",   strmhz(buf, bd->bi_plb_busfreq));
+#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || 
defined(CONFIG_XILINX_405) || \
+    defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) 
|| \
+    defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
+       print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
+#endif
+#else  /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
+#if defined(CONFIG_CPM2)
+       print_str ("vco",           strmhz(buf, bd->bi_vco));
+       print_str ("sccfreq",       strmhz(buf, bd->bi_sccfreq));
+       print_str ("brgfreq",       strmhz(buf, bd->bi_brgfreq));
+#endif
+       print_str ("intfreq",       strmhz(buf, bd->bi_intfreq));
+#if defined(CONFIG_CPM2)
+       print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
+#endif
+       print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
+#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
+#if defined(CONFIG_MPC8220)
+       print_str ("inpfreq",       strmhz(buf, bd->bi_inpfreq));
+       print_str ("flbfreq",       strmhz(buf, bd->bi_flbfreq));
+       print_str ("pcifreq",       strmhz(buf, bd->bi_pcifreq));
+       print_str ("vcofreq",       strmhz(buf, bd->bi_vcofreq));
+       print_str ("pevfreq",       strmhz(buf, bd->bi_pevfreq));
+#endif
+
+       print_eth(0);
+#if defined(CONFIG_HAS_ETH1)
+       print_eth(1);
+#endif
+#if defined(CONFIG_HAS_ETH2)
+       print_eth(2);
+#endif
+#if defined(CONFIG_HAS_ETH3)
+       print_eth(3);
+#endif
+#if defined(CONFIG_HAS_ETH4)
+       print_eth(4);
+#endif
+#if defined(CONFIG_HAS_ETH5)
+       print_eth(5);
+#endif
+
+#ifdef CONFIG_HERMES
+       print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
+#endif
+       printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+}
diff --git a/lib_sh/Makefile b/lib_sh/Makefile
index f7c6479..54df402 100644
--- a/lib_sh/Makefile
+++ b/lib_sh/Makefile
@@ -24,6 +24,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 ifeq ($(CONFIG_SH2),y)
diff --git a/lib_sh/bdinfo.c b/lib_sh/bdinfo.c
new file mode 100644
index 0000000..fac5b33
--- /dev/null
+++ b/lib_sh/bdinfo.c
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       print_eth(0);
+       printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+       printf ("baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_sparc/Makefile b/lib_sparc/Makefile
index 040ca10..67a68da 100644
--- a/lib_sparc/Makefile
+++ b/lib_sparc/Makefile
@@ -25,12 +25,17 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(ARCH).a
 
-SOBJS  =
+SOBJS-y        =
 
-COBJS  = board.o cache.o interrupts.o time.o bootm.o
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
+COBJS-y        = board.o
+COBJS-y        = bootm.o
+COBJS-y        = cache.o
+COBJS-y        = interrupts.o
+COBJS-y        = time.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
 
 $(LIB):        $(obj).depend $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
diff --git a/lib_sparc/bdinfo.c b/lib_sparc/bdinfo.c
new file mode 100644
index 0000000..4614fea
--- /dev/null
+++ b/lib_sparc/bdinfo.c
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <command.h>
+#include <bdinfo.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+#ifdef DEBUG
+       print_num("bd address             ", (ulong) bd);
+#endif
+       print_num("memstart               ", bd->bi_memstart);
+       print_lnum("memsize                ", bd->bi_memsize);
+       print_num("flashstart             ", bd->bi_flashstart);
+       print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
+       print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
+       printf("CONFIG_SYS_RELOC_MONITOR_BASE = 0x%lx (%d)\n", 
CONFIG_SYS_RELOC_MONITOR_BASE,
+              CONFIG_SYS_MONITOR_LEN);
+       printf("CONFIG_SYS_MALLOC_BASE        = 0x%lx (%d)\n", 
CONFIG_SYS_MALLOC_BASE,
+              CONFIG_SYS_MALLOC_LEN);
+       printf("CONFIG_SYS_INIT_SP_OFFSET     = 0x%lx (%d)\n", 
CONFIG_SYS_INIT_SP_OFFSET,
+              CONFIG_SYS_STACK_SIZE);
+       printf("CONFIG_SYS_PROM_OFFSET        = 0x%lx (%d)\n", 
CONFIG_SYS_PROM_OFFSET,
+              CONFIG_SYS_PROM_SIZE);
+       printf("CONFIG_SYS_GBL_DATA_OFFSET    = 0x%lx (%d)\n", 
CONFIG_SYS_GBL_DATA_OFFSET,
+              CONFIG_SYS_GBL_DATA_SIZE);
+
+#if defined(CONFIG_CMD_NET)
+       print_eth(0);
+       printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+       printf("baudrate               = %6ld bps\n", bd->bi_baudrate);
+}
-- 
1.6.1.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to