drop unmaintained packages
[openwrt/staging/florian.git] / package / uboot-lantiq / patches / 400-lzma.patch
diff --git a/package/uboot-lantiq/patches/400-lzma.patch b/package/uboot-lantiq/patches/400-lzma.patch
deleted file mode 100644 (file)
index b2f498a..0000000
+++ /dev/null
@@ -1,1687 +0,0 @@
---- a/.gitignore
-+++ b/.gitignore
-@@ -23,6 +23,11 @@
- /u-boot.hex
- /u-boot.map
- /u-boot.bin
-+/u-boot.bin.bz2
-+/u-boot.bin.gz
-+/u-boot.bin.lzma
-+/u-boot.bin.lzo
-+/u-boot.dis
- /u-boot.srec
- /u-boot.ldr
- /u-boot.ldr.hex
-@@ -30,6 +35,20 @@
- /u-boot.lds
- /u-boot-onenand.bin
- /u-boot-flexonenand.bin
-+/u-boot-bootstrap
-+/u-boot-bootstrap.hex
-+/u-boot-bootstrap.map
-+/u-boot-bootstrap.bin
-+/u-boot-bootstrap.bin.bz2
-+/u-boot-bootstrap.bin.gz
-+/u-boot-bootstrap.bin.lzma
-+/u-boot-bootstrap.bin.lzo
-+/u-boot-bootstrap.dis
-+/u-boot-bootstrap.srec
-+/u-boot-bootstrap.ldr
-+/u-boot-bootstrap.ldr.hex
-+/u-boot-bootstrap.ldr.srec
-+/u-boot-bootstrap.lds
- #
- # Generated files
-@@ -38,6 +57,7 @@
- *.depend
- /LOG
- /errlog
-+/.payload.s
- /reloc_off
- # stgit generated dirs
-@@ -63,3 +83,6 @@
- /onenand_ipl/onenand-ipl*
- /onenand_ipl/board/*/onenand*
- /onenand_ipl/board/*/*.S
-+examples/standalone/
-+
-+setvars
---- a/Makefile
-+++ b/Makefile
-@@ -183,6 +183,12 @@
- OBJS := $(addprefix $(obj),$(OBJS))
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+BOOTSTRAP_OBJS  = cpu/$(ARCH)/start_bootstrap.o
-+
-+BOOTSTRAP_OBJS := $(addprefix $(obj),$(BOOTSTRAP_OBJS))
-+endif
-+
- LIBS  = lib_generic/libgeneric.a
- LIBS += lib_generic/lzma/liblzma.a
- LIBS += lib_generic/lzo/liblzo.a
-@@ -254,6 +260,25 @@
- LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
- LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+BOOTSTRAP_LIBS =  lib_generic/libgeneric_bootstrap.a
-+BOOTSTRAP_LIBS += cpu/$(ARCH)/lib$(ARCH)_bootstrap.a
-+BOOTSTRAP_LIBS += lib_$(ARCH)/lib$(ARCH)_bootstrap.a
-+BOOTSTRAP_LIBS += common/libcommon_bootstrap.a
-+BOOTSTRAP_LIBS-$(CONFIG_BOOTSTRAP_SERIAL) += drivers/serial/libserial.a
-+
-+BOOTSTRAP_LIBS-$(CONFIG_BOOTSTRAP_LZMA) += lib_generic/lzma/liblzma.a
-+BOOTSTRAP_LIBS-$(CONFIG_BOOTSTRAP_LZO) += lib/lzo/liblzo.a
-+BOOTSTRAP_LIBS += $(BOOTSTRAP_LIBS-y)
-+
-+BOOTSTRAP_LIBS := $(addprefix $(obj),$(BOOTSTRAP_LIBS))
-+.PHONY : $(BOOTSTRAP_LIBS)
-+
-+BOOTSTRAP_LIBBOARD = board/$(BOARDDIR)/lib$(BOARD)_bootstrap.a
-+BOOTSTRAP_LIBBOARD := $(addprefix $(obj),$(BOOTSTRAP_LIBBOARD))
-+endif
-+
-+
- # Add GCC lib
- ifdef USE_PRIVATE_LIBGCC
- ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
-@@ -267,6 +292,9 @@
- PLATFORM_LIBS += $(PLATFORM_LIBGCC)
- export PLATFORM_LIBS
-+BOOTSTRAP_PLATFORM_LIBS += $(PLATFORM_LIBGCC)
-+export BOOTSTRAP_PLATFORM_LIBS
-+
- # Special flags for CPP when processing the linker script.
- # Pass the version down so we can handle backwards compatibility
- # on the fly.
-@@ -289,12 +317,19 @@
- __OBJS := $(subst $(obj),,$(OBJS))
- __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
-+__BOOTSTRAP_OBJS := $(subst $(obj),,$(BOOTSTRAP_OBJS))
-+__BOOTSTRAP_LIBS := $(subst $(obj),,$(BOOTSTRAP_LIBS)) $(subst $(obj),,$(BOOTSTRAP_LIBBOARD))
-+
- #########################################################################
- #########################################################################
- # Always append ALL so that arch config.mk's can add custom ones
- ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+ALL += $(obj)u-boot-bootstrap.srec $(obj)u-boot-bootstrap.bin
-+endif
-+
- all:          $(ALL)
- $(obj)u-boot.hex:     $(obj)u-boot
-@@ -306,6 +341,19 @@
- $(obj)u-boot.bin:     $(obj)u-boot
-               $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
-+$(obj)u-boot.bin.gz:  $(obj)u-boot.bin
-+              gzip -c $< > $@
-+
-+$(obj)u-boot.bin.lzma:        $(obj)u-boot.bin
-+              echo lzma -e -z -c $<  $@
-+              lzma e  $< $@
-+
-+$(obj)u-boot.bin.lzo: $(obj)u-boot.bin
-+              lzop -9 -c $< > $@
-+
-+$(obj)u-boot.bin.bz2: $(obj)u-boot.bin
-+              bzip2 --best -z -c $< > $@
-+
- $(obj)u-boot.ldr:     $(obj)u-boot
-               $(CREATE_LDR_ENV)
-               $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
-@@ -335,12 +383,12 @@
-               $(obj)tools/ubsha1 $(obj)u-boot.bin
- $(obj)u-boot.dis:     $(obj)u-boot
--              $(OBJDUMP) -d $< > $@
-+              $(OBJDUMP) -S -d $< > $@
- GEN_UBOOT = \
-               UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
-               sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
--              cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
-+              cd $(LNDIR) && $(LD) --gc-sections $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
-                       --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
-                       -Map u-boot.map -o u-boot
- $(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
-@@ -362,6 +410,120 @@
- $(LIBBOARD):  depend $(LIBS)
-               $(MAKE) -C $(dir $(subst $(obj),,$@))
-+# Bootstrap targets
-+
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+$(obj)u-boot-bootstrap.hex:   $(obj)u-boot-bootstrap
-+              $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
-+
-+$(obj)u-boot-bootstrap.srec:  $(obj)u-boot-bootstrap
-+              $(OBJCOPY) -O srec $< $@
-+
-+$(obj)u-boot-bootstrap.bin:   $(obj)u-boot-bootstrap
-+              $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
-+              $(BOARD_SIZE_CHECK)
-+
-+$(obj)u-boot-bootstrap.bin.gz:        $(obj)u-boot-bootstrap.bin
-+              gzip -c $< > $@
-+
-+$(obj)u-boot-bootstrap.bin.lzma:      $(obj)u-boot-bootstrap.bin
-+              lzma -e -z -c $< > $@
-+
-+$(obj)u-boot.bin-bootstrap.lzo:       $(obj)u-boot-bootstrap.bin
-+              lzop -9 -c $< > $@
-+
-+$(obj)u-boot.bin-bootstrap.bz2:       $(obj)u-boot-bootstrap.bin
-+              bzip2 --best -z -c $< > $@
-+
-+$(obj)u-boot-bootstrap.ldr:   $(obj)u-boot-bootstrap
-+              $(CREATE_LDR_ENV)
-+              $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
-+              $(BOARD_SIZE_CHECK)
-+
-+$(obj)u-boot-bootstrap.ldr.hex:       $(obj)u-boot-bootstrap.ldr
-+              $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
-+
-+$(obj)u-boot-bootstrap.ldr.srec:      $(obj)u-boot-bootstrap.ldr
-+              $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
-+
-+$(obj)u-boot-bootstrap.img:   $(obj)u-boot-bootstrap.bin
-+              $(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
-+              -a $(CONFIG_BOOTSTRAP_BASE) -e 0 \
-+              -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
-+                      sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \
-+              -d $< $@
-+
-+$(obj)u-boot-bootstrap.imx:       $(obj)u-boot-bootstrap.bin
-+              $(obj)tools/mkimage -n $(IMX_CONFIG) -T imximage \
-+              -e $(CONFIG_BOOTSTRAP_BASE) -d $< $@
-+
-+$(obj)u-boot-bootstrap.kwb:       $(obj)u-boot-bootstrap.bin
-+              $(obj)tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
-+              -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
-+
-+$(obj)u-boot-bootstrap.sha1:  $(obj)u-boot-bootstrap.bin
-+              $(obj)tools/ubsha1 $(obj)u-boot-bootstrap.bin
-+
-+$(obj)u-boot-bootstrap.dis:   $(obj)u-boot-bootstrap
-+              echo $(OBJDUMP) -S -d $< > $@
-+              $(OBJDUMP) -S -d $< > $@
-+
-+PAYLOAD_FILE_BASE=$(obj)u-boot.bin
-+ifeq ($(CONFIG_BOOTSTRAP_GZIP),y)
-+PAYLOAD_FILE_EXT:=.gz
-+endif
-+ifeq ($(CONFIG_BOOTSTRAP_LZMA),y)
-+PAYLOAD_FILE_EXT:=.lzma
-+endif
-+ifeq ($(CONFIG_BOOTSTRAP_LZO),y)
-+PAYLOAD_FILE_EXT:=.lzo
-+endif
-+ifeq ($(CONFIG_BOOTSTRAP_BZIP2),y)
-+PAYLOAD_FILE_EXT:=.bz2
-+endif
-+
-+PAYLOAD_FILE := $(PAYLOAD_FILE_BASE)$(PAYLOAD_FILE_EXT)
-+
-+$(obj).payload.s: $(PAYLOAD_FILE)
-+              echo ".globl payload_start" > $@
-+              echo ".globl payload_end" >> $@
-+              echo ".globl payload_size" >> $@
-+              echo ".globl payload_uncsize" >> $@
-+              echo .section .payload,\"a\",@progbits >> $@
-+              echo "payload_size:" >> $@
-+              echo -n ".word " >> $@
-+              wc -c $(PAYLOAD_FILE) | cut -f1 -d' ' >> $@
-+              echo "payload_uncsize:" >> $@
-+              echo -n ".word " >> $@
-+              wc -c $(obj)u-boot.bin | cut -f1 -d' ' >> $@
-+              echo "payload_start:" >> $@
-+              echo .incbin \"$(PAYLOAD_FILE)\" >> $@
-+              echo "payload_end:" >> $@
-+
-+
-+GEN_UBOOT_BOOTSTRAP = \
-+              UNDEF_SYM=`$(OBJDUMP) -x $(BOOTSTRAP_LIBBOARD) $(BOOTSTRAP_LIBS) | \
-+              sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-+              cd $(LNDIR) && $(LD) --gc-sections $(BOOTSTRAP_LDFLAGS) $$UNDEF_SYM  $(obj).payload.o $(__BOOTSTRAP_OBJS) \
-+                      --start-group $(__BOOTSTRAP_LIBS) --end-group $(BOOTSTRAP_PLATFORM_LIBS) \
-+                      -Map u-boot-bootstrap.map -o u-boot-bootstrap
-+
-+$(obj)u-boot-bootstrap:       depend $(SUBDIRS) $(BOOTSTRAP_OBJS) $(BOOTSTRAP_LIBS) $(BOOTSTRAP_LDSCRIPT) $(obj)u-boot-bootstrap.lds $(obj).payload.o #$(BOOTSTRAP_LIBBOARD) 
-+              #echo "--------$(BOOTSTRAP_LIBBOARD)"
-+              #echo "$(GEN_UBOOT_BOOTSTRAP)"
-+              $(GEN_UBOOT_BOOTSTRAP)
-+ifeq ($(CONFIG_KALLSYMS),y)
-+              smap=`$(call SYSTEM_MAP,u-boot-bootstrap) | \
-+                      awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
-+              $(CC) $(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
-+                      -c common/system_map.c -o $(obj)common/system_map.o
-+              $(GEN_UBOOT_BOOTSTRAP) $(obj)common/system_map.o
-+endif
-+
-+$(BOOTSTRAP_LIBBOARD):        depend $(BOOTSTRAP_LIBS)
-+              $(MAKE) -C $(dir $(subst $(obj),,$@)) $(notdir $@)
-+endif
-+
- $(SUBDIRS):   depend
-               $(MAKE) -C $@ all
-@@ -371,6 +533,9 @@
- $(obj)u-boot.lds: $(LDSCRIPT)
-               $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
-+$(obj)u-boot-bootstrap.lds: $(BOOTSTRAP_LDSCRIPT)
-+              $(CPP) $(CPPFLAGS) $(BOOTSTRAP_LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
-+
- $(NAND_SPL):  $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
-               $(MAKE) -C nand_spl/board/$(BOARDDIR) all
-@@ -3829,6 +3994,7 @@
-              $(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin}      \
-              $(obj)board/trab/trab_fkt   $(obj)board/voiceblue/eeprom   \
-              $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds  \
-+             $(obj)u-boot-bootstrap.lds                       \
-              $(obj)lib_blackfin/u-boot.lds                              \
-              $(obj)u-boot.lds                                           \
-              $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
-@@ -3853,6 +4019,12 @@
-       @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL)
-       @rm -f $(obj)u-boot.kwb
-       @rm -f $(obj)u-boot.imx
-+      @rm -f $(obj)u-boot.bin{.gz,.lzma,.lzo,.bz2}
-+      @rm -f $(obj)u-boot-bootstrap $(obj)u-boot-bootstrap.map $(obj)u-boot-bootstrap.hex
-+      @rm -f $(obj)u-boot-bootstrap.kwb
-+      @rm -f $(obj)u-boot-bootstrap.imx
-+      @rm -f $(obj)u-boot-bootstrap.bin{.gz,.lzma,.lzo,.bz2}
-+      @rm -f $(obj).payload.s
-       @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
-       @rm -f $(obj)cpu/mpc824x/bedbug_603e.c
-       @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
---- a/lib_mips/config.mk
-+++ b/lib_mips/config.mk
-@@ -47,6 +47,6 @@
- # On the other hand, we want PIC in the U-Boot code to relocate it from ROM
- # to RAM. $28 is always used as gp.
- #
--PLATFORM_CPPFLAGS             += -G 0 -mabicalls -fpic
-+PLATFORM_CPPFLAGS             += -G 0 -mabicalls -fpic -g
- PLATFORM_CPPFLAGS             += -msoft-float
- PLATFORM_LDFLAGS              += -G 0 -static -n -nostdlib
---- /dev/null
-+++ b/cpu/mips/reset.c
-@@ -0,0 +1,39 @@
-+/*
-+ * (C) Copyright 2003
-+ * Wolfgang Denk, DENX Software Engineering, <wd@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 <asm/mipsregs.h>
-+#include <asm/reboot.h>
-+
-+void __attribute__((weak)) _machine_restart(void)
-+{
-+}
-+
-+int __attribute__((weak)) do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-+{
-+      _machine_restart();
-+
-+      fprintf(stderr, "*** reset failed ***\n");
-+      return 0;
-+}
---- /dev/null
-+++ b/cpu/mips/reset_bootstrap.c
-@@ -0,0 +1,39 @@
-+/*
-+ * (C) Copyright 2003
-+ * Wolfgang Denk, DENX Software Engineering, <wd@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 <asm/mipsregs.h>
-+#include <asm/reboot.h>
-+
-+void __attribute__((weak)) _machine_restart(void)
-+{
-+}
-+
-+int __attribute__((weak)) do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-+{
-+      _machine_restart();
-+
-+      printf("*** reset failed ***\n");
-+      return 0;
-+}
---- /dev/null
-+++ b/cpu/mips/start_bootstrap.S
-@@ -0,0 +1,534 @@
-+/*
-+ *  Startup Code for MIPS32 CPU-core base on start.S source
-+ *
-+ *  Copyright (c) 2010        Industrie Dial Face S.p.A.
-+ *  Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com>
-+ *
-+ *  Copyright (c) 2003        Wolfgang Denk <wd@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 <generated/generic-asm-offsets.h>
-+#include <config.h>
-+#include <asm/regdef.h>
-+//#include <asm/mipsregs.h>
-+#define CP0_INDEX $0
-+#define CP0_RANDOM $1
-+#define CP0_ENTRYLO0 $2
-+#define CP0_ENTRYLO1 $3
-+#define CP0_CONF $3
-+#define CP0_CONTEXT $4
-+#define CP0_PAGEMASK $5
-+#define CP0_WIRED $6
-+#define CP0_INFO $7
-+#define CP0_BADVADDR $8
-+#define CP0_COUNT $9
-+#define CP0_ENTRYHI $10
-+#define CP0_COMPARE $11
-+#define CP0_STATUS $12
-+#define CP0_CAUSE $13
-+#define CP0_EPC $14
-+#define CP0_PRID $15
-+#define CP0_EBASE $15,1
-+#define CP0_CONFIG $16
-+#define CP0_LLADDR $17
-+#define CP0_WATCHLO $18
-+#define CP0_WATCHHI $19
-+#define CP0_XCONTEXT $20
-+#define CP0_FRAMEMASK $21
-+#define CP0_DIAGNOSTIC $22
-+#define CP0_DEBUG $23
-+#define CP0_DEPC $24
-+#define CP0_PERFORMANCE $25
-+#define CP0_ECC $26
-+#define CP0_CACHEERR $27
-+#define CP0_TAGLO $28
-+#define CP0_TAGHI $29
-+#define CP0_ERROREPC $30
-+#define CP0_DESAVE $31
-+#define ST0_CU0                 0x10000000
-+#define CONF_CM_UNCACHED      2
-+#define CONF_CM_CACHABLE_NONCOHERENT  3
-+#define EBASEB_CPUNUM               0
-+#define EBASEF_CPUNUM               (0x3ff << EBASEB_CPUNUM)
-+#define MIPS_CONF7_RPS              4 //((unsigned long)(1) << 2)
-+#define CONF_CM_CACHABLE_NONCOHERENT        3
-+#ifndef CONFIG_SYS_MIPS_CACHE_OPER_MODE
-+#define CONFIG_SYS_MIPS_CACHE_OPER_MODE CONF_CM_CACHABLE_NONCOHERENT
-+#endif
-+
-+      /*
-+       * For the moment disable interrupts, mark the kernel mode and
-+       * set ST0_KX so that the CPU does not spit fire when using
-+       * 64-bit addresses.
-+       */
-+      .macro  setup_c0_status set clr
-+      .set    push
-+      mfc0    t0, CP0_STATUS
-+      or      t0, ST0_CU0 | \set | 0x1f | \clr
-+      xor     t0, 0x1f | \clr
-+      mtc0    t0, CP0_STATUS
-+      .set    noreorder
-+      sll     zero, 3                         # ehb
-+      .set    pop
-+      .endm
-+
-+      .macro  setup_c0_status_reset
-+#ifdef CONFIG_64BIT
-+      setup_c0_status ST0_KX 0
-+#else
-+      setup_c0_status 0 0
-+#endif
-+      .endm
-+
-+#define RVECENT(f,n) \
-+   b f; nop
-+#define XVECENT(f,bev) \
-+   b f     ;           \
-+   li k0,bev
-+
-+      .set noreorder
-+
-+      .globl _start
-+      .text
-+_start:
-+      RVECENT(reset,0)        /* U-boot entry point */
-+      RVECENT(reset,1)        /* software reboot */
-+#if defined(CONFIG_INCA_IP)
-+      .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */
-+      .word 0x00000000           /* phase of the flash                    */
-+#elif defined(CONFIG_PURPLE)
-+      .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */
-+      .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */
-+#else
-+      .word INFINEON_EBU_BOOTCFG /* EBU init code, fetched during booting */
-+      .word 0x00000000           /* phase of the flash                    */
-+#endif
-+      RVECENT(romReserved,3)
-+      RVECENT(romReserved,4)
-+      RVECENT(romReserved,5)
-+      RVECENT(romReserved,6)
-+      RVECENT(romReserved,7)
-+      RVECENT(romReserved,8)
-+      RVECENT(romReserved,9)
-+      RVECENT(romReserved,10)
-+      RVECENT(romReserved,11)
-+      RVECENT(romReserved,12)
-+      RVECENT(romReserved,13)
-+      RVECENT(romReserved,14)
-+      RVECENT(romReserved,15)
-+      RVECENT(romReserved,16)
-+      RVECENT(romReserved,17)
-+      RVECENT(romReserved,18)
-+      RVECENT(romReserved,19)
-+      RVECENT(romReserved,20)
-+      RVECENT(romReserved,21)
-+      RVECENT(romReserved,22)
-+      RVECENT(romReserved,23)
-+      RVECENT(romReserved,24)
-+      RVECENT(romReserved,25)
-+      RVECENT(romReserved,26)
-+      RVECENT(romReserved,27)
-+      RVECENT(romReserved,28)
-+      RVECENT(romReserved,29)
-+      RVECENT(romReserved,30)
-+      RVECENT(romReserved,31)
-+      RVECENT(romReserved,32)
-+      RVECENT(romReserved,33)
-+      RVECENT(romReserved,34)
-+      RVECENT(romReserved,35)
-+      RVECENT(romReserved,36)
-+      RVECENT(romReserved,37)
-+      RVECENT(romReserved,38)
-+      RVECENT(romReserved,39)
-+      RVECENT(romReserved,40)
-+      RVECENT(romReserved,41)
-+      RVECENT(romReserved,42)
-+      RVECENT(romReserved,43)
-+      RVECENT(romReserved,44)
-+      RVECENT(romReserved,45)
-+      RVECENT(romReserved,46)
-+      RVECENT(romReserved,47)
-+      RVECENT(romReserved,48)
-+      RVECENT(romReserved,49)
-+      RVECENT(romReserved,50)
-+      RVECENT(romReserved,51)
-+      RVECENT(romReserved,52)
-+      RVECENT(romReserved,53)
-+      RVECENT(romReserved,54)
-+      RVECENT(romReserved,55)
-+      RVECENT(romReserved,56)
-+      RVECENT(romReserved,57)
-+      RVECENT(romReserved,58)
-+      RVECENT(romReserved,59)
-+      RVECENT(romReserved,60)
-+      RVECENT(romReserved,61)
-+      RVECENT(romReserved,62)
-+      RVECENT(romReserved,63)
-+      XVECENT(romExcHandle,0x200)     /* bfc00200: R4000 tlbmiss vector */
-+      RVECENT(romReserved,65)
-+      RVECENT(romReserved,66)
-+      RVECENT(romReserved,67)
-+      RVECENT(romReserved,68)
-+      RVECENT(romReserved,69)
-+      RVECENT(romReserved,70)
-+      RVECENT(romReserved,71)
-+      RVECENT(romReserved,72)
-+      RVECENT(romReserved,73)
-+      RVECENT(romReserved,74)
-+      RVECENT(romReserved,75)
-+      RVECENT(romReserved,76)
-+      RVECENT(romReserved,77)
-+      RVECENT(romReserved,78)
-+      RVECENT(romReserved,79)
-+      XVECENT(romExcHandle,0x280)     /* bfc00280: R4000 xtlbmiss vector */
-+      RVECENT(romReserved,81)
-+      RVECENT(romReserved,82)
-+      RVECENT(romReserved,83)
-+      RVECENT(romReserved,84)
-+      RVECENT(romReserved,85)
-+      RVECENT(romReserved,86)
-+      RVECENT(romReserved,87)
-+      RVECENT(romReserved,88)
-+      RVECENT(romReserved,89)
-+      RVECENT(romReserved,90)
-+      RVECENT(romReserved,91)
-+      RVECENT(romReserved,92)
-+      RVECENT(romReserved,93)
-+      RVECENT(romReserved,94)
-+      RVECENT(romReserved,95)
-+      XVECENT(romExcHandle,0x300)     /* bfc00300: R4000 cache vector */
-+      RVECENT(romReserved,97)
-+      RVECENT(romReserved,98)
-+      RVECENT(romReserved,99)
-+      RVECENT(romReserved,100)
-+      RVECENT(romReserved,101)
-+      RVECENT(romReserved,102)
-+      RVECENT(romReserved,103)
-+      RVECENT(romReserved,104)
-+      RVECENT(romReserved,105)
-+      RVECENT(romReserved,106)
-+      RVECENT(romReserved,107)
-+      RVECENT(romReserved,108)
-+      RVECENT(romReserved,109)
-+      RVECENT(romReserved,110)
-+      RVECENT(romReserved,111)
-+      XVECENT(romExcHandle,0x380)     /* bfc00380: R4000 general vector */
-+      RVECENT(romReserved,113)
-+      RVECENT(romReserved,114)
-+      RVECENT(romReserved,115)
-+      RVECENT(romReserved,116)
-+      RVECENT(romReserved,116)
-+      RVECENT(romReserved,118)
-+      RVECENT(romReserved,119)
-+      RVECENT(romReserved,120)
-+      RVECENT(romReserved,121)
-+      RVECENT(romReserved,122)
-+      RVECENT(romReserved,123)
-+      RVECENT(romReserved,124)
-+      RVECENT(romReserved,125)
-+      RVECENT(romReserved,126)
-+      RVECENT(romReserved,127)
-+
-+      /* We hope there are no more reserved vectors!
-+       * 128 * 8 == 1024 == 0x400
-+       * so this is address R_VEC+0x400 == 0xbfc00400
-+       */
-+#if 1
-+      XVECENT(romExcHandle,0x400);    /* bfc00400: Int, CauseIV=1 */
-+      RVECENT(romReserved,129);
-+      RVECENT(romReserved,130);
-+      RVECENT(romReserved,131);
-+      RVECENT(romReserved,132);
-+      RVECENT(romReserved,133);
-+      RVECENT(romReserved,134);
-+      RVECENT(romReserved,135);
-+      RVECENT(romReserved,136);
-+      RVECENT(romReserved,137);
-+      RVECENT(romReserved,138);
-+      RVECENT(romReserved,139);
-+      RVECENT(romReserved,140);
-+      RVECENT(romReserved,141);
-+      RVECENT(romReserved,142);
-+      RVECENT(romReserved,143);
-+      XVECENT(romExcHandle,0x480);    /* bfc00480: EJTAG debug exception */
-+#elif defined(CONFIG_PURPLE)
-+/* 0xbfc00400 */
-+      .word   0xdc870000
-+      .word   0xfca70000
-+      .word   0x20840008
-+      .word   0x20a50008
-+      .word   0x20c6ffff
-+      .word   0x14c0fffa
-+      .word   0x00000000
-+      .word   0x03e00008
-+      .word   0x00000000
-+      .word   0x00000000
-+/* 0xbfc00428 */
-+      .word   0xdc870000
-+      .word   0xfca70000
-+      .word   0x20840008
-+      .word   0x20a50008
-+      .word   0x20c6ffff
-+      .word   0x14c0fffa
-+      .word   0x00000000
-+      .word   0x03e00008
-+      .word   0x00000000
-+      .word   0x00000000
-+#endif /* CONFIG_PURPLE */
-+      .align 4
-+reset:
-+#ifdef CONFIG_SYS_MIPS_MULTI_CPU
-+       mfc0    k0, CP0_EBASE
-+       and     k0, EBASEF_CPUNUM
-+       bne     k0, zero, ifx_mips_handler_cpux
-+       nop
-+#endif
-+      /* Clear watch registers.
-+       */
-+      mtc0    zero, CP0_WATCHLO
-+      mtc0    zero, CP0_WATCHHI
-+
-+      /* WP(Watch Pending), SW0/1 should be cleared. */
-+      mtc0    zero, CP0_CAUSE
-+
-+      setup_c0_status_reset
-+#if defined(CONFIG_MIPS24KEC) || defined(CONFIG_MIPS34KC)
-+      /* CONFIG7 register */
-+      /* Erratum "RPS May Cause Incorrect Instruction Execution"
-+      * for 24KEC and 34KC */
-+      mfc0    k0, CP0_CONFIG, 7
-+      li      k1, MIPS_CONF7_RPS
-+      or      k0, k1
-+      mtc0    k0, CP0_CONFIG, 7
-+#endif
-+
-+      /* Init Timer */
-+      mtc0    zero, CP0_COUNT
-+      mtc0    zero, CP0_COMPARE
-+
-+      /* CONFIG0 register */
-+      li      t0, CONF_CM_UNCACHED
-+      mtc0    t0, CP0_CONFIG
-+
-+      /* Initialize $gp.
-+       */
-+      bal     1f
-+      nop
-+      .word   _gp
-+1:
-+      lw      gp, 0(ra)
-+
-+      /* Initialize any external memory.
-+       */
-+      la      t9, lowlevel_init
-+      jalr    t9
-+      nop
-+
-+      /* Initialize caches...
-+       */
-+      la      t9, mips_cache_reset
-+      jalr    t9
-+      nop
-+
-+      /* ... and enable them.
-+       */
-+      li      t0, CONF_CM_CACHABLE_NONCOHERENT /*CONFIG_SYS_MIPS_CACHE_OPER_MODE*/
-+      mtc0    t0, CP0_CONFIG
-+
-+      /* Set up temporary stack.
-+       */
-+#ifdef CONFIG_SYS_INIT_RAM_LOCK_MIPS
-+      li      a0, CONFIG_SYS_INIT_SP_OFFSET
-+      la      t9, mips_cache_lock
-+      jalr    t9
-+      nop
-+#endif
-+
-+      li      t0, CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_INIT_SP_OFFSET
-+      la      sp, 0(t0)
-+
-+      la      t9, bootstrap_board_init_f
-+      jr      t9
-+      nop
-+
-+/*
-+ * void relocate_code (addr_sp, gd, addr_moni)
-+ *
-+ * This "function" does not return, instead it continues in RAM
-+ * after relocating the monitor code.
-+ *
-+ * a0 = addr_sp
-+ * a1 = gd
-+ * a2 = destination address
-+ */
-+      .globl  relocate_code
-+      .ent    relocate_code
-+relocate_code:
-+      move    sp, a0          /* Set new stack pointer        */
-+
-+      li      t0, CONFIG_BOOTSTRAP_TEXT_BASE
-+      la      t3, in_ram
-+      lw      t2, -12(t3)     /* t2 <-- uboot_end_data        */
-+      move    t1, a2
-+      move    s2, a2          /* s2 <-- destination address   */
-+
-+      /*
-+       * Fix $gp:
-+       *
-+       * New $gp = (Old $gp - CONFIG_SYS_MONITOR_BASE) + Destination Address
-+       */
-+      move    t6, gp
-+      sub     gp, CONFIG_BOOTSTRAP_TEXT_BASE
-+      add     gp, a2          /* gp now adjusted              */
-+      sub     s1, gp, t6      /* s1 <-- relocation offset     */
-+
-+      /*
-+       * t0 = source address
-+       * t1 = target address
-+       * t2 = source end address
-+       */
-+
-+      /*
-+       * Save destination address and size for later usage in flush_cache()
-+       */
-+      move    s0, a1          /* save gd in s0                */
-+      move    a0, t1          /* a0 <-- destination addr      */
-+      sub     a1, t2, t0      /* a1 <-- size                  */
-+
-+      /* On the purple board we copy the code earlier in a special way
-+       * in order to solve flash problems
-+       */
-+#ifndef CONFIG_PURPLE
-+1:
-+      lw      t3, 0(t0)
-+      sw      t3, 0(t1)
-+      addu    t0, 4
-+      ble     t0, t2, 1b
-+      addu    t1, 4           /* delay slot                   */
-+#endif
-+
-+      /* If caches were enabled, we would have to flush them here.
-+       */
-+
-+      /* a0 & a1 are already set up for flush_cache(start, size) */
-+      la      t9, flush_cache
-+      jalr    t9
-+      nop
-+
-+      /* Jump to where we've relocated ourselves.
-+       */
-+      addi    t0, s2, in_ram - _start
-+      jr      t0
-+      nop
-+
-+      .word   _gp
-+      .word   _GLOBAL_OFFSET_TABLE_
-+      .word   uboot_end_data
-+      .word   uboot_end
-+      .word   num_got_entries
-+
-+in_ram:
-+      /*
-+       * Now we want to update GOT.
-+       *
-+       * GOT[0] is reserved. GOT[1] is also reserved for the dynamic object
-+       * generated by GNU ld. Skip these reserved entries from relocation.
-+       */
-+      lw      t3, -4(t0)      /* t3 <-- num_got_entries       */
-+      lw      t4, -16(t0)     /* t4 <-- _GLOBAL_OFFSET_TABLE_ */
-+      lw      t5, -20(t0)     /* t5 <-- _gp   */
-+      sub     t4, t5          /* compute offset*/
-+      add     t4, t4, gp      /* t4 now holds relocated _GLOBAL_OFFSET_TABLE_ */
-+      addi    t4, t4, 8       /* Skipping first two entries.  */
-+      li      t2, 2
-+1:
-+      lw      t1, 0(t4)
-+      beqz    t1, 2f
-+      add     t1, s1
-+      sw      t1, 0(t4)
-+2:
-+      addi    t2, 1
-+      blt     t2, t3, 1b
-+      addi    t4, 4           /* delay slot                   */
-+
-+      /* Clear BSS.
-+       */
-+      lw      t1, -12(t0)     /* t1 <-- uboot_end_data        */
-+      lw      t2, -8(t0)      /* t2 <-- uboot_end             */
-+      add     t1, s1          /* adjust pointers              */
-+      add     t2, s1
-+
-+      sub     t1, 4
-+1:
-+      addi    t1, 4
-+      bltl    t1, t2, 1b
-+      sw      zero, 0(t1)     /* delay slot                   */
-+
-+      move    a0, s0          /* a0 <-- gd                    */
-+      la      t9, bootstrap_board_init_r
-+      jr      t9
-+      move    a1, s2          /* delay slot                   */
-+
-+      .end    relocate_code
-+
-+/*
-+ * void copy_and_jump (void)
-+ *
-+ * This function copies/unzips the u-boot image and runs it.
-+ * This "function" does not return
-+ *
-+*/
-+      .globl  copy_and_jump
-+      .ent    copy_and_jump
-+copy_and_jump:
-+
-+      /* copy_uboot(CONFIG_SYS_MONITOR_BASE, payload_uncsize, payload_start, payload_size) */
-+      li      a0, CONFIG_SYS_MONITOR_BASE
-+      la      a1, payload_uncsize
-+      lw      a1, 0(a1)
-+      la      a2, payload_start
-+      la      a3, payload_size
-+      la      t9, copy_uboot
-+      jalr t9
-+      lw      a3, 0(a3)       /* delay slot */
-+
-+      li      t9, CONFIG_SYS_MONITOR_BASE
-+      jr      t9
-+      nop
-+
-+      .end copy_and_jump
-+
-+      /* Exception handlers.
-+       */
-+romReserved:
-+      b       romReserved
-+
-+romExcHandle:
-+      b       romExcHandle
-+#ifdef CONFIG_SYS_MIPS_MULTI_CPU
-+/*
-+ * Stop Slave CPUs
-+ */
-+ifx_mips_handler_cpux:
-+       wait;
-+       b ifx_mips_handler_cpux;
-+       nop;
-+#endif
---- a/lib_mips/Makefile
-+++ b/lib_mips/Makefile
-@@ -24,6 +24,9 @@
- include $(TOPDIR)/config.mk
- LIB   = $(obj)lib$(ARCH).a
-+BOOTSTRAP_LIB =       $(obj)lib$(ARCH)_bootstrap.a
-+
-+BOOTSTRAP_LIB-$(CONFIG_BOOTSTRAP)     = $(BOOTSTRAP_LIB)
- SOBJS-y       +=
-@@ -35,12 +38,21 @@
- endif
- COBJS-y       += time.o
--SRCS  := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP)   += board_bootstrap.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP)   += time.o
-+
-+BOOTSTRAP_OBJS        := $(addprefix $(obj),$(BOOTSTRAP_SOBJS-y) $(BOOTSTRAP_COBJS-y))
-+
-+SRCS  := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) $(BOOTSTRAP_SOBJS-y:.o=.S) $(BOOTSTRAP_COBJS-y:.o=.c)
- OBJS  := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
-+all: $(obj).depend $(LIB) $(BOOTSTRAP_LIB)
- $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
-+$(BOOTSTRAP_LIB):     $(obj).depend $(BOOTSTRAP_OBJS)
-+      $(AR) $(ARFLAGS) $@ $(BOOTSTRAP_OBJS)
-+
- #########################################################################
- # defines $(obj).depend target
---- /dev/null
-+++ b/lib_mips/board_bootstrap.c
-@@ -0,0 +1,270 @@
-+/*
-+ * (C) Copyright 2010 Industrie Dial Face S.p.A.
-+ * Luigi 'Comio' Mantellini, luigi.mantellini@idf-hit.com
-+ *
-+ * (C) Copyright 2003
-+ * Wolfgang Denk, DENX Software Engineering, wd@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 <malloc.h>
-+#include <stdio_dev.h>
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+extern int timer_init(void);
-+
-+extern int incaip_set_cpuclk(void);
-+
-+extern ulong uboot_end_data;
-+extern ulong uboot_end;
-+
-+#ifdef CONFIG_BOOTSTRAP_SERIAL
-+static char *failed = "*** failed ***\n";
-+#endif
-+/*
-+ * mips_io_port_base is the begin of the address space to which x86 style
-+ * I/O ports are mapped.
-+ */
-+unsigned long mips_io_port_base = -1;
-+
-+int __board_early_init_f(void)
-+{
-+      /*
-+       * Nothing to do in this dummy implementation
-+       */
-+      return 0;
-+}
-+
-+int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f")));
-+int bootstrap_board_early_init_f(void) __attribute__((weak, alias("board_early_init_f")));
-+
-+static int bootstrap_init_func_ram (void)
-+{
-+      if ((gd->ram_size = bootstrap_initdram (0)) > 0) {
-+              return (0);
-+      }
-+#ifdef CONFIG_BOOTSTRAP_SERIAL
-+      puts (failed);
-+#endif
-+      return (1);
-+}
-+
-+static int bootstrap_display_banner(void)
-+{
-+#ifdef CONFIG_BOOTSTRAP_SERIAL
-+      puts ("bootstrap...");
-+#endif
-+      return (0);
-+}
-+
-+static int bootstrap_init_baudrate (void)
-+{
-+#if defined(CONFIG_BOOTSTRAP_BAUDRATE)
-+      gd->baudrate = CONFIG_BOOTSTRAP_BAUDRATE;
-+#else
-+      gd->baudrate = CONFIG_BAUDRATE;
-+#endif
-+      return 0;
-+}
-+
-+/*
-+ * Breath some life into the board...
-+ *
-+ * The first part of initialization is running from Flash memory;
-+ * its main purpose is to initialize the RAM so that we
-+ * can relocate the monitor code to RAM.
-+ */
-+
-+/*
-+ * All attempts to come up with a "common" initialization sequence
-+ * that works for all boards and architectures failed: some of the
-+ * requirements are just _too_ different. To get rid of the resulting
-+ * mess of board dependend #ifdef'ed code we now make the whole
-+ * initialization sequence configurable to the user.
-+ *
-+ * The requirements for any new initalization function is simple: it
-+ * receives a pointer to the "global data" structure as it's only
-+ * argument, and returns an integer return code, where 0 means
-+ * "continue" and != 0 means "fatal error, hang the system".
-+ */
-+typedef int (init_fnc_t) (void);
-+
-+static init_fnc_t *init_sequence[] = {
-+      bootstrap_board_early_init_f,
-+      timer_init,
-+      bootstrap_init_baudrate,/* initialze baudrate settings */
-+#ifdef CONFIG_BOOTSTRAP_SERIAL
-+      serial_init,                    /* serial communications setup */
-+#endif
-+      bootstrap_display_banner,       /* say that we are here */
-+      bootstrap_checkboard,
-+      bootstrap_init_func_ram,
-+      NULL,
-+};
-+
-+
-+void bootstrap_board_init_f(ulong bootflag)
-+{
-+      gd_t gd_data, *id;
-+      bd_t *bd;
-+      init_fnc_t **init_fnc_ptr;
-+      ulong addr, addr_sp, len = (ulong)&uboot_end - CONFIG_BOOTSTRAP_TEXT_BASE;
-+      ulong *s;
-+
-+      /* Pointer is writable since we allocated a register for it.
-+       */
-+      gd = &gd_data;
-+      /* compiler optimization barrier needed for GCC >= 3.4 */
-+      __asm__ __volatile__("": : :"memory");
-+
-+      memset ((void *)gd, 0, sizeof (gd_t));
-+
-+      for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
-+              if ((*init_fnc_ptr)() != 0) {
-+                      bootstrap_hang ();
-+              }
-+      }
-+
-+      /*
-+       * Now that we have DRAM mapped and working, we can
-+       * relocate the code and continue running from DRAM.
-+       */
-+      addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;
-+
-+      /* We can reserve some RAM "on top" here.
-+       */
-+
-+      /* round down to next 4 kB limit.
-+       */
-+      addr &= ~(4096 - 1);
-+      debug ("Top of RAM usable for U-Boot at: %08lx\n", addr);
-+
-+      /* Reserve memory for U-Boot code, data & bss
-+       * round down to next 16 kB limit
-+       */
-+      addr -= len;
-+      addr &= ~(16 * 1024 - 1);
-+
-+      debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);
-+
-+       /* Reserve memory for malloc() arena.
-+       */
-+      addr_sp = addr - CONFIG_SYS_MALLOC_LEN;
-+      debug ("Reserving %dk for malloc() at: %08lx\n",
-+                      CONFIG_SYS_MALLOC_LEN >> 10, addr_sp);
-+
-+      /*
-+       * (permanently) allocate a Board Info struct
-+       * and a permanent copy of the "global" data
-+       */
-+      addr_sp -= sizeof(bd_t);
-+      bd = (bd_t *)addr_sp;
-+      gd->bd = bd;
-+      debug ("Reserving %zu Bytes for Board Info at: %08lx\n",
-+                      sizeof(bd_t), addr_sp);
-+
-+      addr_sp -= sizeof(gd_t);
-+      id = (gd_t *)addr_sp;
-+      debug ("Reserving %zu Bytes for Global Data at: %08lx\n",
-+                      sizeof (gd_t), addr_sp);
-+
-+      /* Reserve memory for boot params.
-+       */
-+      addr_sp -= CONFIG_SYS_BOOTPARAMS_LEN;
-+      bd->bi_boot_params = addr_sp;
-+      debug ("Reserving %dk for boot params() at: %08lx\n",
-+                      CONFIG_SYS_BOOTPARAMS_LEN >> 10, addr_sp);
-+
-+      /*
-+       * Finally, we set up a new (bigger) stack.
-+       *
-+       * Leave some safety gap for SP, force alignment on 16 byte boundary
-+       * Clear initial stack frame
-+       */
-+      addr_sp -= 16;
-+      addr_sp &= ~0xF;
-+      s = (ulong *)addr_sp;
-+      *s-- = 0;
-+      *s-- = 0;
-+      addr_sp = (ulong)s;
-+      debug ("Stack Pointer at: %08lx\n", addr_sp);
-+
-+      /*
-+       * Save local variables to board info struct
-+       */
-+      bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;        /* start of  DRAM memory */
-+      bd->bi_memsize  = gd->ram_size;         /* size  of  DRAM memory in bytes */
-+      bd->bi_baudrate = gd->baudrate;         /* Console Baudrate */
-+
-+      memcpy (id, (void *)gd, sizeof (gd_t));
-+
-+      /* On the purple board we copy the code in a special way
-+       * in order to solve flash problems
-+       */
-+      relocate_code (addr_sp, id, addr);
-+
-+      /* NOTREACHED - relocate_code() does not return */
-+}
-+/************************************************************************
-+ *
-+ * This is the next part if the initialization sequence: we are now
-+ * running from RAM and have a "normal" C environment, i. e. global
-+ * data can be written, BSS has been cleared, the stack size in not
-+ * that critical any more, etc.
-+ *
-+ ************************************************************************
-+ */
-+
-+void bootstrap_board_init_r (gd_t *id, ulong dest_addr)
-+{
-+      extern void malloc_bin_reloc (void);
-+      extern void copy_and_jump(void);
-+
-+      bd_t *bd;
-+
-+      gd = id;
-+      gd->flags |= GD_FLG_RELOC;      /* tell others: relocation done */
-+
-+      debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr);
-+
-+      gd->reloc_off = dest_addr - CONFIG_BOOTSTRAP_TEXT_BASE;
-+
-+      bd = gd->bd;
-+
-+      /* The Malloc area is immediately below the monitor copy in DRAM */
-+      mem_malloc_init(CONFIG_BOOTSTRAP_BASE + gd->reloc_off -
-+                      CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
-+      malloc_bin_reloc();
-+
-+      copy_and_jump();
-+
-+      /* NOTREACHED - no way out of command loop except booting */
-+}
-+
-+void bootstrap_hang (void)
-+{
-+#ifdef CONFIG_BOOTSTRAP_SERIAL
-+      puts ("### ERROR ### Please RESET the board ###\n");
-+#endif
-+      for (;;);
-+}
---- a/common/Makefile
-+++ b/common/Makefile
-@@ -24,6 +24,9 @@
- include $(TOPDIR)/config.mk
- LIB   = $(obj)libcommon.a
-+BOOTSTRAP_LIB = $(obj)libcommon_bootstrap.a
-+
-+BOOTSTRAP_LIB-$(CONFIG_BOOTSTRAP)     = $(BOOTSTRAP_LIB)
- AOBJS =
-@@ -168,18 +171,27 @@
- COBJS-$(CONFIG_UPDATE_TFTP) += update.o
- COBJS-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += dlmalloc.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_SERIAL) += console_bootstrap.o
-+
-+BOOTSTRAP_COBJS       := $(sort $(BOOTSTRAP_COBJS-y))
-+BOOTSTRAP_OBJS        := $(addprefix $(obj),$(BOOTSTRAP_COBJS))
-+
- COBJS := $(sort $(COBJS-y))
--SRCS  := $(AOBJS:.o=.S) $(COBJS:.o=.c)
-+SRCS  := $(AOBJS:.o=.S) $(COBJS:.o=.c) $(BOOTSTRAP_COBJS:.o=.c)
- OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
- CPPFLAGS += -I..
--all:  $(LIB) $(AOBJS)
-+all:  $(LIB) $(BOOTSTRAP_LIB-y) $(AOBJS)
- $(LIB): $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
-+$(BOOTSTRAP_LIB): $(obj).depend $(BOOTSTRAP_OBJS)
-+      $(AR) $(ARFLAGS) $@ $(BOOTSTRAP_OBJS)
-+
- $(obj)env_embedded.o: $(src)env_embedded.c $(obj)../tools/envcrc
-       $(CC) $(AFLAGS) -Wa,--no-warn \
-               -DENV_CRC=$(shell $(obj)../tools/envcrc) \
---- /dev/null
-+++ b/common/console_bootstrap.c
-@@ -0,0 +1,81 @@
-+/*
-+ * (C) Copyright 2000
-+ * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
-+ *
-+ * 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 <stdarg.h>
-+#include <malloc.h>
-+
-+/** U-Boot INITIAL CONSOLE-COMPATIBLE FUNCTION *****************************/
-+
-+int getc(void)
-+{
-+      /* Send directly to the handler */
-+      return serial_getc();
-+}
-+
-+int tstc(void)
-+{
-+      /* Send directly to the handler */
-+      return serial_tstc();
-+}
-+
-+void putc(const char c)
-+{
-+      /* Send directly to the handler */
-+      serial_putc(c);
-+}
-+
-+void puts(const char *s)
-+{
-+      serial_puts(s);
-+}
-+
-+void printf(const char *fmt, ...)
-+{
-+      va_list args;
-+      char printbuffer[CONFIG_SYS_PBSIZE];
-+
-+      va_start(args, fmt);
-+
-+      /* For this to work, printbuffer must be larger than
-+       * anything we ever want to print.
-+       */
-+      vsprintf(printbuffer, fmt, args);
-+      va_end(args);
-+
-+      /* Print the string */
-+      puts(printbuffer);
-+}
-+
-+void vprintf(const char *fmt, va_list args)
-+{
-+      char printbuffer[CONFIG_SYS_PBSIZE];
-+
-+      /* For this to work, printbuffer must be larger than
-+       * anything we ever want to print.
-+       */
-+      vsprintf(printbuffer, fmt, args);
-+
-+      /* Print the string */
-+      puts(printbuffer);
-+}
---- a/config.mk
-+++ b/config.mk
-@@ -136,7 +136,7 @@
- ARFLAGS = crv
- endif
- RELFLAGS= $(PLATFORM_RELFLAGS)
--DBGFLAGS= -g # -DDEBUG
-+DBGFLAGS= -g
- OPTFLAGS= -Os #-fomit-frame-pointer
- ifndef LDSCRIPT
- #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
-@@ -146,6 +146,11 @@
- LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
- endif
- endif
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+ifndef BOOTSTRAP_LDSCRIPT
-+BOOTSTRAP_LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-bootstrap.lds
-+endif
-+endif
- OBJCFLAGS += --gap-fill=0xff
- gccincdir := $(shell $(CC) -print-file-name=include)
-@@ -156,6 +161,10 @@
- CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
- endif
-+ifneq ($(CONFIG_BOOTSTRAP_TEXT_BASE),)
-+CPPFLAGS += -DCONFIG_BOOTSTRAP_TEXT_BASE=$(CONFIG_BOOTSTRAP_TEXT_BASE)
-+endif
-+
- ifneq ($(RESET_VECTOR_ADDRESS),)
- CPPFLAGS += -DRESET_VECTOR_ADDRESS=$(RESET_VECTOR_ADDRESS)
- endif
-@@ -176,6 +185,7 @@
- endif
- CFLAGS += $(call cc-option,-fno-stack-protector)
-+CFLAGS += $(call cc-option,-ffunction-sections)
- # avoid trigraph warnings while parsing pci.h (produced by NIOS gcc-2.9)
- # this option have to be placed behind -Wall -- that's why it is here
-@@ -203,6 +213,13 @@
- LDFLAGS += -Ttext $(TEXT_BASE)
- endif
-+ifeq ($(CONFIG_BOOTSTRAP),y)
-+BOOTSTRAP_LDFLAGS += -Bstatic -T $(obj)u-boot-bootstrap.lds $(PLATFORM_LDFLAGS)
-+ifneq ($(CONFIG_BOOTSTRAP_TEXT_BASE),)
-+BOOTSTRAP_LDFLAGS += -Ttext $(CONFIG_BOOTSTRAP_TEXT_BASE)
-+endif
-+endif
-+
- # Location of a usable BFD library, where we define "usable" as
- # "built for ${HOST}, supports ${TARGET}".  Sensible values are
- # - When cross-compiling: the root of the cross-environment
---- a/include/common.h
-+++ b/include/common.h
-@@ -722,6 +722,27 @@
- int cpu_release(int nr, int argc, char *argv[]);
- #endif
-+/* Bootstrap specific code */
-+#ifdef CONFIG_BOOTSTRAP
-+void bootstrap_hang(void) __attribute__ ((noreturn));
-+void bootstrap_board_init_f(ulong) __attribute__ ((noreturn));
-+void bootstrap_board_init_r(gd_t *, ulong) __attribute__ ((noreturn));
-+int bootstrap_checkboard(void);
-+
-+int bootstrap_serial_init(void);
-+void bootstrap_serial_exit(void);
-+void bootstrap_serial_setbrg(void);
-+void bootstrap_serial_putc(const char);
-+void bootstrap_serial_putc_raw(const char);
-+void bootstrap_serial_puts(const char *);
-+int bootstrap_serial_getc(void);
-+int bootstrap_serial_tstc(void);
-+
-+phys_size_t bootstrap_initdram (int);
-+
-+int copy_uboot(void *dst, size_t unc_size, void *src, size_t size);
-+#endif
-+
- #endif /* __ASSEMBLY__ */
- /* Put only stuff here that the assembler can digest */
---- a/lib_generic/Makefile
-+++ b/lib_generic/Makefile
-@@ -24,6 +24,9 @@
- include $(TOPDIR)/config.mk
- LIB   = $(obj)libgeneric.a
-+BOOTSTRAP_LIB = $(obj)libgeneric_bootstrap.a
-+
-+BOOTSTRAP_LIB-$(CONFIG_BOOTSTRAP)     = $(BOOTSTRAP_LIB)
- COBJS-$(CONFIG_ADDR_MAP) += addr_map.o
- COBJS-$(CONFIG_BZIP2) += bzlib.o
-@@ -50,14 +53,37 @@
- COBJS-y += vsprintf.o
- COBJS-$(CONFIG_ZLIB) += zlib.o
- COBJS-$(CONFIG_RBTREE)        += rbtree.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += string.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += vsprintf.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += div64.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += ctype.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += time.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += bootstrap.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_GZIP) += zlib.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_GZIP) += gunzip.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_GZIP) += crc32.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_BZIP2) += bzlib.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_BZIP2) += bzlib_crctable.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_BZIP2) += bzlib_decompress.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_BZIP2) += bzlib_randtable.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_BZIP2) += bzlib_huffman.o
-+
-+BOOTSTRAP_COBJS       := $(BOOTSTRAP_COBJS-y)
-+BOOTSTRAP_OBJS        := $(addprefix $(obj),$(BOOTSTRAP_COBJS))
- COBJS := $(COBJS-y)
--SRCS  := $(COBJS:.o=.c)
-+SRCS  := $(COBJS:.o=.c) $(BOOTSTRAP_COBJS:.o=.c)
- OBJS  := $(addprefix $(obj),$(COBJS))
-+all: $(obj).depend $(LIB) $(BOOTSTRAP_LIB-y)
-+
- $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
-+$(BOOTSTRAP_LIB):     $(obj).depend $(BOOTSTRAP_OBJS)
-+      $(AR) $(ARFLAGS) $@ $(BOOTSTRAP_OBJS)
-+
-+
- #########################################################################
- # defines $(obj).depend target
---- /dev/null
-+++ b/lib_generic/bootstrap.c
-@@ -0,0 +1,95 @@
-+/*
-+ * (C) Copyright 2010 Industrie Dial Face S.p.A.
-+ * Luigi 'Comio' Mantellini, luigi.mantellini@idf-hit.com
-+ *
-+ * (C) Copyright 2003
-+ * Wolfgang Denk, DENX Software Engineering, wd@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 <stdio_dev.h>
-+
-+#ifdef CONFIG_BOOTSTRAP_LZMA
-+#include <lzma/LzmaTypes.h>
-+#include <lzma/LzmaDec.h>
-+#include <lzma/LzmaTools.h>
-+#endif /* CONFIG_BOOTSTRAP_LZMA */
-+
-+#ifdef CONFIG_BOOTSTRAP_LZO
-+#include <linux/lzo.h>
-+#endif /* CONFIG_BOOTSTRAP_LZO */
-+
-+#ifdef CONFIG_BOOTSTRAP_BZIP2
-+#include <bzlib.h>
-+#endif
-+
-+DECLARE_GLOBAL_DATA_PTR;
-+
-+#if defined(CONFIG_BOOTSTRAP_SERIAL)
-+static const char *algo = 
-+#if defined(CONFIG_BOOTSTRAP_GZIP)
-+    "gzip";
-+#elif defined(CONFIG_BOOTSTRAP_LZMA)
-+    "lzma";
-+#elif defined(CONFIG_BOOTSTRAP_LZO)
-+    "lzo";
-+#elif defined(CONFIG_BOOTSTRAP_BZIP2)
-+    "bzip2";
-+#else
-+    "flat";
-+#endif
-+#endif
-+
-+int copy_uboot(void *dst, size_t unc_size, void *src, size_t size)
-+{
-+      int ret;
-+      debug("copy from %p (%d) to %p (%d)\n", src, size, dst, unc_size);
-+#if defined(CONFIG_BOOTSTRAP_SERIAL)
-+      printf("Uncompressing payload (%s)...", algo);
-+#endif
-+#if defined(CONFIG_BOOTSTRAP_GZIP)
-+      ret = gunzip(dst, unc_size, src, &size);
-+#elif defined(CONFIG_BOOTSTRAP_LZMA)
-+      SizeT outsize = unc_size;
-+      ret = lzmaBuffToBuffDecompress(dst, &outsize, src, size);
-+#elif defined(CONFIG_BOOTSTRAP_LZO)
-+      uint unc_len = unc_size;
-+      ret = lzop_decompress(src, size, dst, &unc_len);
-+#elif defined(CONFIG_BOOTSTRAP_BZIP2)
-+      uint unc_len = unc_size;
-+      ret = BZ2_bzBuffToBuffDecompress ((char*)dst, &unc_len, (char *)src, size, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0);
-+#else
-+      memcpy(dst, src, size);
-+      ret = 0;
-+#endif
-+      if (ret) {
-+#if defined(CONFIG_BOOTSTRAP_SERIAL)
-+          printf("failed with error %d.\n", ret);
-+#endif
-+          bootstrap_hang();
-+      } else {
-+#if defined(CONFIG_BOOTSTRAP_SERIAL)
-+          puts("done.\n");
-+#endif
-+      }
-+      return ret;
-+}
---- a/lib_generic/lzma/Makefile
-+++ b/lib_generic/lzma/Makefile
-@@ -32,7 +32,9 @@
- CFLAGS += -D_LZMA_PROB32
--COBJS-$(CONFIG_LZMA) += LzmaDec.o LzmaTools.o
-+COBJS-$(CONFIG_LZMA)$(CONFIG_BOOTSTRAP_LZMA) += LzmaDec.o LzmaTools.o
-+
-+COBJS-y       += $(COBJS-yy)
- COBJS = $(COBJS-y)
- SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
---- a/lib_generic/lzo/Makefile
-+++ b/lib_generic/lzo/Makefile
-@@ -27,7 +27,9 @@
- SOBJS =
--COBJS-$(CONFIG_LZO) += lzo1x_decompress.o
-+COBJS-$(CONFIG_LZO)$(CONFIG_BOOTSTRAP_LZO) += lzo1x_decompress.o
-+
-+COBJS-y       += $(OBJS-yy)
- COBJS = $(COBJS-y)
- SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
---- a/cpu/mips/Makefile
-+++ b/cpu/mips/Makefile
-@@ -24,25 +24,46 @@
- include $(TOPDIR)/config.mk
- LIB   = $(obj)lib$(CPU).a
-+BOOTSTRAP_LIB = $(obj)lib$(CPU)_bootstrap.a
-+
-+BOOTSTRAP_LIB-$(CONFIG_BOOTSTRAP) = $(BOOTSTRAP_LIB)
- START = start.o
- SOBJS-y       = cache.o
--COBJS-y       = cpu.o interrupts.o
-+COBJS-y       = cpu.o reset.o interrupts.o
- SOBJS-$(CONFIG_INCA_IP)       += incaip_wdt.o
- COBJS-$(CONFIG_INCA_IP)       += asc_serial.o incaip_clock.o
-+#COBJS-$(CONFIG_IFX_ASC) += ifx_asc.o
- COBJS-$(CONFIG_PURPLE)        += asc_serial.o
- COBJS-$(CONFIG_SOC_AU1X00) += au1x00_eth.o au1x00_serial.o au1x00_usb_ohci.o
--SRCS  := $(START:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
-+#BOOTSTRAP_START = start_bootstrap.o
-+BOOTSTRAP_START-$(CONFIG_BOOTSTRAP) += start_bootstrap.o #$(BOOTSTRAP_START)
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP) += cpu.o interrupts.o reset_bootstrap.o
-+BOOTSTRAP_SOBJS-$(CONFIG_BOOTSTRAP) += cache.o
-+BOOTSTRAP_COBJS-$(CONFIG_DANUBE) += danube-clock.o
-+BOOTSTRAP_COBJS-$(CONFIG_AR9) += ar9-clock.o
-+BOOTSTRAP_COBJS-$(CONFIG_BOOTSTRAP_SERIAL) += ifx_asc.o
-+
-+BOOTSTRAP_OBJS        := $(addprefix $(obj),$(BOOTSTRAP_SOBJS-y) $(BOOTSTRAP_COBJS-y))
-+BOOTSTRAP_START := $(addprefix $(obj),$(BOOTSTRAP_START-y))
-+
-+SRCS  := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c) $(BOOTSTRAP_START-y:.o=.S) $(BOOTSTRAP_SOBJS-y:.o=.S) $(BOOTSTRAP_COBJS-y:.o=.c)
- OBJS  := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
- START := $(addprefix $(obj),$(START))
--all:  $(obj).depend $(START) $(LIB)
-+all:  $(obj).depend $(START) $(LIB) $(BOOTSTRAP_START-y) $(BOOTSTRAP_LIB-y)
--$(LIB):       $(OBJS)
-+$(LIB):        $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
-+#$(BOOTSTRAP_START):  $(obj).depend
-+
-+$(BOOTSTRAP_LIB):     $(BOOTSTRAP_OBJS)
-+      $(AR) $(ARFLAGS) $@ $(BOOTSTRAP_OBJS)
-+
-+
- #########################################################################
- # defines $(obj).depend target