Merge branch 'master' of /home/git/u-boot
authorMarian Balakowicz <m8@semihalf.com>
Thu, 21 Feb 2008 16:18:01 +0000 (17:18 +0100)
committerMarian Balakowicz <m8@semihalf.com>
Thu, 21 Feb 2008 16:18:01 +0000 (17:18 +0100)
1  2 
Makefile
common/Makefile
lib_arm/Makefile
lib_arm/bootm.c
lib_ppc/Makefile

diff --combined Makefile
index ba6940bf84928d557957f207737ae95dc4545a83,a731ee8979c79dc042aba2f19ad9c8df77383a7d..e46ea8502cb5613f231272093d23010e618a96bd
+++ b/Makefile
@@@ -23,8 -23,8 +23,8 @@@
  
  VERSION = 1
  PATCHLEVEL = 3
- SUBLEVEL = 1
- EXTRAVERSION =
+ SUBLEVEL = 2
+ EXTRAVERSION = -rc1
  U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
  VERSION_FILE = $(obj)include/version_autogenerated.h
  
@@@ -185,18 -185,6 +185,6 @@@ endi
  ifeq ($(CPU),mpc85xx)
  OBJS += cpu/$(CPU)/resetvec.o
  endif
- ifeq ($(CPU),bf533)
- OBJS += cpu/$(CPU)/start1.o   cpu/$(CPU)/interrupt.o  cpu/$(CPU)/cache.o
- OBJS += cpu/$(CPU)/flush.o    cpu/$(CPU)/init_sdram.o
- endif
- ifeq ($(CPU),bf537)
- OBJS += cpu/$(CPU)/start1.o   cpu/$(CPU)/interrupt.o  cpu/$(CPU)/cache.o
- OBJS += cpu/$(CPU)/flush.o    cpu/$(CPU)/init_sdram.o
- endif
- ifeq ($(CPU),bf561)
- OBJS += cpu/$(CPU)/start1.o   cpu/$(CPU)/interrupt.o  cpu/$(CPU)/cache.o
- OBJS += cpu/$(CPU)/flush.o    cpu/$(CPU)/init_sdram.o
- endif
  
  OBJS := $(addprefix $(obj),$(OBJS))
  
@@@ -253,9 -241,7 +241,7 @@@ LIBS += $(shell if [ -d post/board/$(BO
        "post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi)
  LIBS += common/libcommon.a
  LIBS += libfdt/libfdt.a
- ifeq ($(CONFIG_API),y)
  LIBS += api/libapi.a
- endif
  
  LIBS := $(addprefix $(obj),$(LIBS))
  .PHONY : $(LIBS)
@@@ -266,11 -252,8 +252,8 @@@ PLATFORM_LIBS += -L $(shell dirname `$(
  # The "tools" are needed early, so put this first
  # Don't include stuff already done in $(LIBS)
  SUBDIRS       = tools \
-         examples
- ifeq ($(CONFIG_API),y)
- SUBDIRS += api_examples
- endif
+         examples \
+         api_examples
  
  .PHONY : $(SUBDIRS)
  
@@@ -279,13 -262,21 +262,21 @@@ NAND_SPL = nand_sp
  U_BOOT_NAND = $(obj)u-boot-nand.bin
  endif
  
+ ifeq ($(CONFIG_ONENAND_U_BOOT),y)
+ ONENAND_IPL = onenand_ipl
+ U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
+ endif
  __OBJS := $(subst $(obj),,$(OBJS))
  __LIBS := $(subst $(obj),,$(LIBS))
  
  #########################################################################
  #########################################################################
  
- ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)
+ ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
+ ifeq ($(ARCH),blackfin)
+ ALL += $(obj)u-boot.ldr
+ endif
  
  all:          $(ALL)
  
@@@ -298,6 -289,15 +289,15 @@@ $(obj)u-boot.srec:       $(obj)u-boo
  $(obj)u-boot.bin:     $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
  
+ $(obj)u-boot.ldr:     $(obj)u-boot
+               $(LDR) -T $(CONFIG_BFIN_CPU) -f -c $@ $< $(LDR_FLAGS)
+ $(obj)u-boot.ldr.hex: $(obj)u-boot.ldr
+               $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
+ $(obj)u-boot.ldr.srec:        $(obj)u-boot.ldr
+               $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
  $(obj)u-boot.img:     $(obj)u-boot.bin
                ./tools/mkimage -A $(ARCH) -T firmware -C none \
                -a $(TEXT_BASE) -e 0 \
@@@ -312,18 -312,18 +312,18 @@@ $(obj)u-boot.dis:       $(obj)u-boo
                $(OBJDUMP) -d $< > $@
  
  $(obj)u-boot:         depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)
-               UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
+               UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
                cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
                        --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
                        -Map u-boot.map -o u-boot
  
- $(OBJS):      $(obj)include/autoconf.mk
+ $(OBJS):      depend $(obj)include/autoconf.mk
                $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))
  
- $(LIBS):      $(obj)include/autoconf.mk
+ $(LIBS):      depend $(obj)include/autoconf.mk
                $(MAKE) -C $(dir $(subst $(obj),,$@))
  
- $(SUBDIRS):   $(obj)include/autoconf.mk
+ $(SUBDIRS):   depend $(obj)include/autoconf.mk
                $(MAKE) -C $@ all
  
  $(NAND_SPL):  $(VERSION_FILE) $(obj)include/autoconf.mk
  $(U_BOOT_NAND):       $(NAND_SPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
                cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
  
+ $(ONENAND_IPL):       $(VERSION_FILE) $(obj)include/autoconf.mk
+               $(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
+ $(U_BOOT_ONENAND):    $(ONENAND_IPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
+               cat $(obj)onenand_ipl/onenand-ipl-2k.bin $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
  $(VERSION_FILE):
                @( echo -n "#define U_BOOT_VERSION \"U-Boot " ; \
                echo -n "$(U_BOOT_VERSION)" ; \
                echo -n $(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion \
                         $(TOPDIR)) ; \
-               echo "\"" ) > $(VERSION_FILE)
+               echo "\"" ) > $@.tmp
+               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
  
  gdbtools:
                $(MAKE) -C tools/gdb all || exit 1
@@@ -1225,9 -1232,11 +1232,11 @@@ G2000_config: unconfi
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000
  
  hcu4_config:  unconfig
+       @mkdir -p $(obj)board/netstal/common
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu4 netstal
  
  hcu5_config:  unconfig
+       @mkdir -p $(obj)board/netstal/common
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu5 netstal
  
  HH405_config: unconfig
@@@ -2301,8 -2310,11 +2310,11 @@@ xtract_omap1610xxx = $(subst _cs0boot,,
  
  xtract_omap730p2 = $(subst _cs0boot,,$(subst _cs3boot,, $(subst _config,,$1)))
  
+ at91cap9adk_config    :       unconfig
+       @$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91cap9
  at91rm9200dk_config   :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk NULL at91rm9200
+       @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk atmel at91rm9200
  
  cmc_pu2_config        :       unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200
@@@ -2313,6 -2325,8 +2325,8 @@@ csb637_config   :       unconfi
  mp2usb_config :       unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t mp2usb NULL at91rm9200
  
+ m501sk_config :       unconfig
+       @$(MKCONFIG) $(@:_config=) arm arm920t m501sk NULL at91rm9200
  
  ########################################################################
  ## ARM Integrator boards - see doc/README-integrator for more info.
@@@ -2353,17 -2367,8 +2367,8 @@@ mx1ads_config  :       unconfi
  mx1fs2_config :       unconfig
        @$(MKCONFIG) $(@:_config=) arm arm920t mx1fs2 NULL imx
  
- netstar_32_config     \
  netstar_config:               unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _32_,$@)" ] ; then \
-               $(XECHO) "... 32MB SDRAM" ; \
-               echo "#define PHYS_SDRAM_1_SIZE SZ_32M" >>$(obj)include/config.h ; \
-       else \
-               $(XECHO) "... 64MB SDRAM" ; \
-               echo "#define PHYS_SDRAM_1_SIZE SZ_64M" >>$(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a netstar arm arm925t netstar
+       @$(MKCONFIG) $(@:_config=) arm arm925t netstar
  
  omap1510inn_config :  unconfig
        @$(MKCONFIG) $(@:_config=) arm arm925t omap1510inn
@@@ -2602,7 -2607,9 +2607,9 @@@ omap2420h4_config       : unconfi
        @$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4
  
  apollon_config                : unconfig
+       @echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h
        @$(MKCONFIG) $(@:_config=) arm arm1136 apollon
+       @echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk
  
  #========================================================================
  # i386
@@@ -2815,20 -2822,19 +2822,19 @@@ xupv2p_config:       unconfi
        @echo "#define CONFIG_XUPV2P 1" >> $(obj)include/config.h
        @$(MKCONFIG) -a $(@:_config=) microblaze microblaze xupv2p xilinx
  
- #########################################################################
- ## Blackfin
- #########################################################################
- bf533-ezkit_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) blackfin bf533 bf533-ezkit
+ #========================================================================
+ # Blackfin
+ #========================================================================
  
- bf533-stamp_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) blackfin bf533 bf533-stamp
+ # Analog Devices boards
+ BFIN_BOARDS = bf533-ezkit bf533-stamp bf537-stamp bf561-ezkit
  
bf537-stamp_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) blackfin bf537 bf537-stamp
$(BFIN_BOARDS:%=%_config)     : unconfig
+       @$(MKCONFIG) $(@:_config=) blackfin $(firstword $(subst -, ,$@)) $(@:_config=)
  
- bf561-ezkit_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) blackfin bf561 bf561-ezkit
+ $(BFIN_BOARDS):
+       $(MAKE) $@_config
+       $(MAKE)
  
  #========================================================================
  # AVR32
@@@ -2903,6 -2909,8 +2909,8 @@@ clean
        @rm -f $(obj)board/bf537-stamp/u-boot.lds $(obj)board/bf561-ezkit/u-boot.lds
        @rm -f $(obj)include/bmp_logo.h
        @rm -f $(obj)nand_spl/u-boot-spl $(obj)nand_spl/u-boot-spl.map
+       @rm -f $(obj)onenand_ipl/onenand-ipl $(obj)onenand_ipl/onenand-ipl.bin \
+               $(obj)onenand_ipl/onenand-ipl-2k.bin $(obj)onenand_ipl/onenand-ipl.map
        @rm -f $(obj)api_examples/demo $(VERSION_FILE)
  
  clobber:      clean
        @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS
        @rm -fr $(obj)*.*~
        @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL)
 -      @rm -f $(obj)tools/crc32.c $(obj)tools/environment.c $(obj)tools/env/crc32.c $(obj)tools/sha1.c
 +      @rm -f $(obj)tools/crc32.c $(obj)tools/environment.c $(obj)tools/env/crc32.c
 +      @rm -f $(obj)tools/sha1.c $(obj)tools/image.c
        @rm -f $(obj)tools/inca-swap-bytes $(obj)cpu/mpc824x/bedbug_603e.c
        @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
        @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -lname "*" -print | xargs rm -f
+       @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -lname "*" -print | xargs rm -f
        @[ ! -d $(obj)api_examples ] || find $(obj)api_examples -lname "*" -print | xargs rm -f
  
  ifeq ($(OBJTREE),$(SRCTREE))
diff --combined common/Makefile
index fa5c6195fe6b6107d26cb2ab31072029a49d1253,a88d1ef536d33588c81b4738ebc48f44aea4ff14..fc842225d52ebb459e85c3b417d9a219e9d57620
@@@ -36,8 -36,6 +36,8 @@@ COBJS-y += cmd_autoscript.
  COBJS-$(CONFIG_CMD_BDI) += cmd_bdinfo.o
  COBJS-$(CONFIG_CMD_BEDBUG) += cmd_bedbug.o
  COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
 +COBJS-y += image.o
 +COBJS-y += gunzip.o
  COBJS-y += cmd_boot.o
  COBJS-y += cmd_bootm.o
  COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
@@@ -78,6 -76,7 +78,7 @@@ COBJS-y += cmd_nand.
  COBJS-$(CONFIG_CMD_NET) += cmd_net.o
  COBJS-y += cmd_nvedit.o
  COBJS-y += cmd_onenand.o
+ COBJS-$(CONFIG_CMD_OTP) += cmd_otp.o
  ifdef CONFIG_PCI
  COBJS-$(CONFIG_CMD_PCI) += cmd_pci.o
  endif
@@@ -88,10 -87,10 +89,11 @@@ COBJS-$(CONFIG_CMD_REISER) += cmd_reise
  COBJS-y += cmd_sata.o
  COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
  COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o
+ COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
  COBJS-$(CONFIG_CMD_TERMINAL) += cmd_terminal.o
  COBJS-$(CONFIG_CMD_UNIVERSE) += cmd_universe.o
  COBJS-$(CONFIG_CMD_USB) += cmd_usb.o
 +COBJS-$(CONFIG_CMD_XIMG) += cmd_ximg.o
  COBJS-y += cmd_vfd.o
  COBJS-y += command.o
  COBJS-y += console.o
diff --combined lib_arm/Makefile
index aa9bee75cc88b9011cf3c335e55565068a22c550,bfd5b0e6f9974befee5d050a296fa7fb399dca36..18c9e971a6225a2ae281258e00b595144a98d73c
@@@ -27,8 -27,8 +27,8 @@@ LIB   = $(obj)lib$(ARCH).
  
  SOBJS = _ashldi3.o _ashrdi3.o _divsi3.o _modsi3.o _udivsi3.o _umodsi3.o
  
- COBJS = bootm.o board.o \
-         cache.o div0.o
 -COBJS = armlinux.o board.o \
++COBJS = board.o bootm.o \
+         cache.o div0.o interrupts.o
  
  SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
  OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
diff --combined lib_arm/bootm.c
index 529b0975ec9824a02404421f7f740b4f7cd2d9c4,0000000000000000000000000000000000000000..31c2d672257577914f37b1cf3d70d286ec6cbfb7
mode 100644,000000..100644
--- /dev/null
@@@ -1,274 -1,0 +1,282 @@@
-       theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
 +/*
 + * (C) Copyright 2002
 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 + * Marius Groeger <mgroeger@sysgo.de>
 + *
 + * Copyright (C) 2001  Erik Mouw (J.A.K.Mouw@its.tudelft.nl)
 + *
 + * 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 <image.h>
 +#include <zlib.h>
 +#include <asm/byteorder.h>
 +
 +DECLARE_GLOBAL_DATA_PTR;
 +
 +#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
 +    defined (CONFIG_CMDLINE_TAG) || \
 +    defined (CONFIG_INITRD_TAG) || \
 +    defined (CONFIG_SERIAL_TAG) || \
 +    defined (CONFIG_REVISION_TAG) || \
 +    defined (CONFIG_VFD) || \
 +    defined (CONFIG_LCD)
 +static void setup_start_tag (bd_t *bd);
 +
 +# ifdef CONFIG_SETUP_MEMORY_TAGS
 +static void setup_memory_tags (bd_t *bd);
 +# endif
 +static void setup_commandline_tag (bd_t *bd, char *commandline);
 +
 +#if 0
 +static void setup_ramdisk_tag (bd_t *bd);
 +#endif
 +# ifdef CONFIG_INITRD_TAG
 +static void setup_initrd_tag (bd_t *bd, ulong initrd_start,
 +                            ulong initrd_end);
 +# endif
 +static void setup_end_tag (bd_t *bd);
 +
 +# if defined (CONFIG_VFD) || defined (CONFIG_LCD)
 +static void setup_videolfb_tag (gd_t *gd);
 +# endif
 +
 +
 +static struct tag *params;
 +#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */
 +
 +void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 +                   image_header_t *hdr, int verify)
 +{
 +      ulong initrd_start, initrd_end;
 +      void (*theKernel)(int zero, int arch, uint params);
 +      bd_t *bd = gd->bd;
++      int machid = bd->bi_arch_number;
++      char *s;
 +
 +#ifdef CONFIG_CMDLINE_TAG
 +      char *commandline = getenv ("bootargs");
 +#endif
 +
 +      theKernel = (void (*)(int, int, uint))image_get_ep (hdr);
 +
++      s = getenv ("machid");
++      if (s) {
++              machid = simple_strtoul (s, NULL, 16);
++              printf ("Using machid 0x%x from environment\n", machid);
++      }
++
 +      get_ramdisk (cmdtp, flag, argc, argv, hdr, verify,
 +                      IH_ARCH_ARM, &initrd_start, &initrd_end);
 +
 +      show_boot_progress (15);
 +
 +      debug ("## Transferring control to Linux (at address %08lx) ...\n",
 +             (ulong) theKernel);
 +
 +#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
 +    defined (CONFIG_CMDLINE_TAG) || \
 +    defined (CONFIG_INITRD_TAG) || \
 +    defined (CONFIG_SERIAL_TAG) || \
 +    defined (CONFIG_REVISION_TAG) || \
 +    defined (CONFIG_LCD) || \
 +    defined (CONFIG_VFD)
 +      setup_start_tag (bd);
 +#ifdef CONFIG_SERIAL_TAG
 +      setup_serial_tag (&params);
 +#endif
 +#ifdef CONFIG_REVISION_TAG
 +      setup_revision_tag (&params);
 +#endif
 +#ifdef CONFIG_SETUP_MEMORY_TAGS
 +      setup_memory_tags (bd);
 +#endif
 +#ifdef CONFIG_CMDLINE_TAG
 +      setup_commandline_tag (bd, commandline);
 +#endif
 +#ifdef CONFIG_INITRD_TAG
 +      if (initrd_start && initrd_end)
 +              setup_initrd_tag (bd, initrd_start, initrd_end);
 +#endif
 +#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
 +      setup_videolfb_tag ((gd_t *) gd);
 +#endif
 +      setup_end_tag (bd);
 +#endif
 +
 +      /* we assume that the kernel is in place */
 +      printf ("\nStarting kernel ...\n\n");
 +
 +#ifdef CONFIG_USB_DEVICE
 +      {
 +              extern void udc_disconnect (void);
 +              udc_disconnect ();
 +      }
 +#endif
 +
 +      cleanup_before_linux ();
 +
++      theKernel (0, machid, bd->bi_boot_params);
 +}
 +
 +
 +#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
 +    defined (CONFIG_CMDLINE_TAG) || \
 +    defined (CONFIG_INITRD_TAG) || \
 +    defined (CONFIG_SERIAL_TAG) || \
 +    defined (CONFIG_REVISION_TAG) || \
 +    defined (CONFIG_LCD) || \
 +    defined (CONFIG_VFD)
 +static void setup_start_tag (bd_t *bd)
 +{
 +      params = (struct tag *) bd->bi_boot_params;
 +
 +      params->hdr.tag = ATAG_CORE;
 +      params->hdr.size = tag_size (tag_core);
 +
 +      params->u.core.flags = 0;
 +      params->u.core.pagesize = 0;
 +      params->u.core.rootdev = 0;
 +
 +      params = tag_next (params);
 +}
 +
 +
 +#ifdef CONFIG_SETUP_MEMORY_TAGS
 +static void setup_memory_tags (bd_t *bd)
 +{
 +      int i;
 +
 +      for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
 +              params->hdr.tag = ATAG_MEM;
 +              params->hdr.size = tag_size (tag_mem32);
 +
 +              params->u.mem.start = bd->bi_dram[i].start;
 +              params->u.mem.size = bd->bi_dram[i].size;
 +
 +              params = tag_next (params);
 +      }
 +}
 +#endif /* CONFIG_SETUP_MEMORY_TAGS */
 +
 +
 +static void setup_commandline_tag (bd_t *bd, char *commandline)
 +{
 +      char *p;
 +
 +      if (!commandline)
 +              return;
 +
 +      /* eat leading white space */
 +      for (p = commandline; *p == ' '; p++);
 +
 +      /* skip non-existent command lines so the kernel will still
 +       * use its default command line.
 +       */
 +      if (*p == '\0')
 +              return;
 +
 +      params->hdr.tag = ATAG_CMDLINE;
 +      params->hdr.size =
 +              (sizeof (struct tag_header) + strlen (p) + 1 + 4) >> 2;
 +
 +      strcpy (params->u.cmdline.cmdline, p);
 +
 +      params = tag_next (params);
 +}
 +
 +
 +#ifdef CONFIG_INITRD_TAG
 +static void setup_initrd_tag (bd_t *bd, ulong initrd_start, ulong initrd_end)
 +{
 +      /* an ATAG_INITRD node tells the kernel where the compressed
 +       * ramdisk can be found. ATAG_RDIMG is a better name, actually.
 +       */
 +      params->hdr.tag = ATAG_INITRD2;
 +      params->hdr.size = tag_size (tag_initrd);
 +
 +      params->u.initrd.start = initrd_start;
 +      params->u.initrd.size = initrd_end - initrd_start;
 +
 +      params = tag_next (params);
 +}
 +#endif /* CONFIG_INITRD_TAG */
 +
 +
 +#if defined (CONFIG_VFD) || defined (CONFIG_LCD)
 +extern ulong calc_fbsize (void);
 +static void setup_videolfb_tag (gd_t *gd)
 +{
 +      /* An ATAG_VIDEOLFB node tells the kernel where and how large
 +       * the framebuffer for video was allocated (among other things).
 +       * Note that a _physical_ address is passed !
 +       *
 +       * We only use it to pass the address and size, the other entries
 +       * in the tag_videolfb are not of interest.
 +       */
 +      params->hdr.tag = ATAG_VIDEOLFB;
 +      params->hdr.size = tag_size (tag_videolfb);
 +
 +      params->u.videolfb.lfb_base = (u32) gd->fb_base;
 +      /* Fb size is calculated according to parameters for our panel
 +       */
 +      params->u.videolfb.lfb_size = calc_fbsize();
 +
 +      params = tag_next (params);
 +}
 +#endif /* CONFIG_VFD || CONFIG_LCD */
 +
 +#ifdef CONFIG_SERIAL_TAG
 +void setup_serial_tag (struct tag **tmp)
 +{
 +      struct tag *params = *tmp;
 +      struct tag_serialnr serialnr;
 +      void get_board_serial(struct tag_serialnr *serialnr);
 +
 +      get_board_serial(&serialnr);
 +      params->hdr.tag = ATAG_SERIAL;
 +      params->hdr.size = tag_size (tag_serialnr);
 +      params->u.serialnr.low = serialnr.low;
 +      params->u.serialnr.high= serialnr.high;
 +      params = tag_next (params);
 +      *tmp = params;
 +}
 +#endif
 +
 +#ifdef CONFIG_REVISION_TAG
 +void setup_revision_tag(struct tag **in_params)
 +{
 +      u32 rev = 0;
 +      u32 get_board_rev(void);
 +
 +      rev = get_board_rev();
 +      params->hdr.tag = ATAG_REVISION;
 +      params->hdr.size = tag_size (tag_revision);
 +      params->u.revision.rev = rev;
 +      params = tag_next (params);
 +}
 +#endif  /* CONFIG_REVISION_TAG */
 +
 +
 +static void setup_end_tag (bd_t *bd)
 +{
 +      params->hdr.tag = ATAG_NONE;
 +      params->hdr.size = 0;
 +}
 +
 +#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */
diff --combined lib_ppc/Makefile
index 6845ed0121dfe3207bdf4280d8d54618b53659ee,afbd5caf5a3d8e24b8255e6be39071be6ee1c21c..61507b038f3d4c5c53e67e9f01f15896f62b6a32
@@@ -25,11 -25,10 +25,11 @@@ include $(TOPDIR)/config.m
  
  LIB   = $(obj)lib$(ARCH).a
  
- SOBJS = ppcstring.o ticks.o
+ SOBJS = ppccache.o ppcstring.o ticks.o
  
  COBJS = board.o \
 -        bat_rw.o cache.o extable.o kgdb.o time.o interrupts.o
 +        bat_rw.o cache.o extable.o kgdb.o time.o interrupts.o \
 +        bootm.o
  
  SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
  OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))