summaryrefslogtreecommitdiffstats
path: root/package/uboot-lantiq/patches/400-lzma.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/uboot-lantiq/patches/400-lzma.patch')
-rw-r--r--package/uboot-lantiq/patches/400-lzma.patch1687
1 files changed, 0 insertions, 1687 deletions
diff --git a/package/uboot-lantiq/patches/400-lzma.patch b/package/uboot-lantiq/patches/400-lzma.patch
deleted file mode 100644
index b2f498ac5..000000000
--- a/package/uboot-lantiq/patches/400-lzma.patch
+++ /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