Merge branch 'master' of git://git.denx.de/u-boot-arm
authorTom Rini <trini@ti.com>
Mon, 18 Mar 2013 16:31:00 +0000 (12:31 -0400)
committerTom Rini <trini@ti.com>
Mon, 18 Mar 2013 18:37:18 +0000 (14:37 -0400)
Albert's rework of the linker scripts conflicted with Simon's making
everyone use __bss_end.  We also had a minor conflict over
README.scrapyard being added to in mainline and enhanced in
u-boot-arm/master with proper formatting.

Conflicts:
arch/arm/cpu/ixp/u-boot.lds
arch/arm/cpu/u-boot.lds
arch/arm/lib/Makefile
board/actux1/u-boot.lds
board/actux2/u-boot.lds
board/actux3/u-boot.lds
board/dvlhost/u-boot.lds
board/freescale/mx31ads/u-boot.lds
doc/README.scrapyard
include/configs/tegra-common.h

Build tested for all of ARM and run-time tested on am335x_evm.

Signed-off-by: Tom Rini <trini@ti.com>
142 files changed:
1  2 
MAINTAINERS
README
arch/arm/cpu/arm920t/ep93xx/u-boot.lds
arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds
arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds
arch/arm/cpu/armv7/am33xx/u-boot-spl.lds
arch/arm/cpu/armv7/omap-common/u-boot-spl.lds
arch/arm/cpu/armv7/start.S
arch/arm/cpu/ixp/u-boot.lds
arch/arm/cpu/u-boot-spl.lds
arch/arm/cpu/u-boot.lds
arch/arm/lib/Makefile
arch/arm/lib/bss.c
arch/avr32/cpu/u-boot.lds
arch/nds32/cpu/n1213/u-boot.lds
arch/nios2/cpu/u-boot.lds
arch/powerpc/cpu/74xx_7xx/u-boot.lds
arch/powerpc/cpu/mpc512x/u-boot.lds
arch/powerpc/cpu/mpc5xx/u-boot.lds
arch/powerpc/cpu/mpc5xxx/u-boot-customlayout.lds
arch/powerpc/cpu/mpc5xxx/u-boot.lds
arch/powerpc/cpu/mpc8220/u-boot.lds
arch/powerpc/cpu/mpc824x/u-boot.lds
arch/powerpc/cpu/mpc8260/u-boot.lds
arch/powerpc/cpu/mpc83xx/u-boot.lds
arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
arch/powerpc/cpu/mpc85xx/u-boot.lds
arch/powerpc/cpu/mpc86xx/u-boot.lds
arch/powerpc/cpu/ppc4xx/u-boot.lds
arch/sh/cpu/sh2/u-boot.lds
arch/sh/cpu/sh3/u-boot.lds
arch/sh/cpu/sh4/u-boot.lds
arch/x86/cpu/u-boot.lds
board/BuS/eb_cpu5282/u-boot.lds
board/LEOX/elpt860/u-boot.lds
board/RPXClassic/u-boot.lds
board/RPXlite/u-boot.lds
board/RPXlite_dw/u-boot.lds
board/RRvision/u-boot.lds
board/actux1/u-boot.lds
board/actux2/u-boot.lds
board/actux3/u-boot.lds
board/adder/u-boot.lds
board/ait/cam_enc_4xx/u-boot-spl.lds
board/altera/nios2-generic/u-boot.lds
board/amcc/acadia/u-boot-nand.lds
board/amcc/bamboo/u-boot-nand.lds
board/amcc/canyonlands/u-boot-nand.lds
board/amcc/kilauea/u-boot-nand.lds
board/amcc/sequoia/u-boot-nand.lds
board/amcc/sequoia/u-boot-ram.lds
board/astro/mcf5373l/u-boot.lds
board/cobra5272/u-boot.lds
board/cogent/u-boot.lds
board/dave/PPChameleonEVB/u-boot.lds
board/davinci/da8xxevm/u-boot-spl-da850evm.lds
board/davinci/da8xxevm/u-boot-spl-hawk.lds
board/dvlhost/u-boot.lds
board/eltec/mhpc/u-boot.lds
board/emk/top860/u-boot.lds
board/ep88x/u-boot.lds
board/esd/dasa_sim/u-boot.lds
board/esd/pmc440/u-boot-nand.lds
board/esd/tasreg/u-boot.lds
board/esteem192e/u-boot.lds
board/evb64260/u-boot.lds
board/fads/u-boot.lds
board/flagadm/u-boot.lds
board/freescale/m5208evbe/u-boot.lds
board/freescale/m52277evb/u-boot.lds
board/freescale/m5235evb/u-boot.lds
board/freescale/m5249evb/u-boot.lds
board/freescale/m5253demo/u-boot.lds
board/freescale/m5253evbe/u-boot.lds
board/freescale/m5271evb/u-boot.lds
board/freescale/m5272c3/u-boot.lds
board/freescale/m5275evb/u-boot.lds
board/freescale/m5282evb/u-boot.lds
board/freescale/m53017evb/u-boot.lds
board/freescale/m5329evb/u-boot.lds
board/freescale/m5373evb/u-boot.lds
board/freescale/m54418twr/u-boot.lds
board/freescale/m54451evb/u-boot.lds
board/freescale/m54455evb/u-boot.lds
board/freescale/m547xevb/u-boot.lds
board/freescale/m548xevb/u-boot.lds
board/freescale/mx31ads/u-boot.lds
board/gaisler/gr_cpci_ax2000/u-boot.lds
board/gaisler/gr_ep2s60/u-boot.lds
board/gaisler/gr_xc3s_1500/u-boot.lds
board/gaisler/grsim/u-boot.lds
board/gaisler/grsim_leon2/u-boot.lds
board/gen860t/u-boot-flashenv.lds
board/gen860t/u-boot.lds
board/genietv/u-boot.lds
board/hermes/u-boot.lds
board/hymod/u-boot.lds
board/icu862/u-boot.lds
board/idmr/u-boot.lds
board/ip860/u-boot.lds
board/ivm/u-boot.lds
board/korat/u-boot-F7FC.lds
board/kup/kup4k/u-boot.lds
board/kup/kup4x/u-boot.lds
board/lwmon/u-boot.lds
board/manroland/uc100/u-boot.lds
board/matrix_vision/mvsmr/u-boot.lds
board/mbx8xx/u-boot.lds
board/mousse/u-boot.lds
board/mvblue/u-boot.lds
board/netphone/u-boot.lds
board/netta/u-boot.lds
board/netta2/u-boot.lds
board/netvia/u-boot.lds
board/nx823/u-boot.lds
board/quantum/u-boot.lds
board/r360mpi/u-boot.lds
board/rbc823/u-boot.lds
board/renesas/sh7752evb/u-boot.lds
board/renesas/sh7757lcr/u-boot.lds
board/rsdproto/u-boot.lds
board/samsung/smdk5250/smdk5250-uboot-spl.lds
board/samsung/smdk6400/u-boot-nand.lds
board/sandpoint/u-boot.lds
board/sixnet/u-boot.lds
board/snmc/qs850/u-boot.lds
board/snmc/qs860t/u-boot.lds
board/spc1920/u-boot.lds
board/spd8xx/u-boot.lds
board/stx/stxxtc/u-boot.lds
board/svm_sc8xx/u-boot.lds
board/tqc/tqm8xx/u-boot.lds
board/v37/u-boot.lds
board/vpac270/u-boot-spl.lds
boards.cfg
config.mk
doc/README.scrapyard
include/configs/tegra-common.h
nand_spl/board/freescale/mx31pdk/u-boot.lds
nand_spl/board/karo/tx25/u-boot.lds
nand_spl/board/samsung/smdk6400/u-boot.lds

diff --combined MAINTAINERS
@@@ -150,6 -150,9 +150,6 @@@ Wolfgang Denk <wd@denx.de
  
        P3G4            MPC7410
  
 -      PCIPPC2         MPC750
 -      PCIPPC6         MPC750
 -
  Phil Edworthy <phil.edworthy@renesas.com>
  
        rsk7264         SH7264
@@@ -231,7 -234,6 +231,7 @@@ Wolfgang Grandegger <wg@denx.de
  
  Anatolij Gustschin <agust@denx.de>
  
 +      ac14xx          MPC5121e
        O2D             MPC5200
        O2D300          MPC5200
        O2DNT2          MPC5200
@@@ -395,7 -397,6 +395,7 @@@ Ricardo Ribalda <ricardo.ribalda@uam.es
  Stefan Roese <sr@denx.de>
  
        a3m071          MPC5200
 +      a4m2k           MPC5200
  
        P3M7448         MPC7448
  
@@@ -606,6 -607,7 +606,7 @@@ Enric Balletbo i Serra <eballetbo@iseeb
  
        igep0020        ARM ARMV7 (OMAP3xx SoC)
        igep0030        ARM ARMV7 (OMAP3xx SoC)
+       igep0032        ARM ARMV7 (OMAP3xx SoC)
  
  Eric Benard <eric@eukrea.com>
  
@@@ -974,6 -976,8 +975,8 @@@ Tom Warren <twarren@nvidia.com
  
        harmony         Tegra20 (ARM7 & A9 Dual Core)
        seaboard        Tegra20 (ARM7 & A9 Dual Core)
+       cardhu          Tegra30 (ARM7 & A9 Quad Core)
+       dalmore         Tegra114 (ARM7 & A15 Quad Core)
  
  Tom Warren <twarren@nvidia.com>
  Stephen Warren <swarren@nvidia.com>
@@@ -1035,6 -1039,14 +1038,14 @@@ Pali Rohár <pali.rohar@gmail.com
  
        nokia_rx51      ARM ARMV7 (OMAP34xx SoC)
  
+ Eric Nelson <eric.nelson@boundarydevices.com>
+       nitrogen6dl             i.MX6DL         1GB
+       nitrogen6dl2g           i.MX6DL         2GB
+       nitrogen6q              i.MX6Q/6D       1GB
+       nitrogen6q2g            i.MX6Q/6D       2GB
+       nitrogen6s              i.MX6S          512MB
+       nitrogen6s1g            i.MX6S          1GB
  -------------------------------------------------------------------------
  
  Unknown / orphaned boards:
diff --combined README
--- 1/README
--- 2/README
+++ b/README
@@@ -485,6 -485,16 +485,16 @@@ The following options need to be config
                Thumb2 this flag will result in Thumb2 code generated by
                GCC.
  
+               CONFIG_ARM_ERRATA_742230
+               CONFIG_ARM_ERRATA_743622
+               CONFIG_ARM_ERRATA_751472
+               If set, the workarounds for these ARM errata are applied early
+               during U-Boot startup. Note that these options force the
+               workarounds to be applied; no CPU-type/version detection
+               exists, unlike the similar options in the Linux kernel. Do not
+               set these options unless they apply!
  - Linux Kernel Interface:
                CONFIG_CLOCKS_IN_MHZ
  
                                          (requires CONFIG_CMD_MEMORY and CONFIG_MD5)
                CONFIG_CMD_MEMINFO      * Display detailed memory information
                CONFIG_CMD_MEMORY         md, mm, nm, mw, cp, cmp, crc, base,
 -                                        loop, loopw, mtest
 +                                        loop, loopw
 +              CONFIG_CMD_MEMTEST        mtest
                CONFIG_CMD_MISC           Misc functions like sleep etc
                CONFIG_CMD_MMC          * MMC memory mapped support
                CONFIG_CMD_MII          * MII utility commands
@@@ -1533,6 -1542,17 +1543,17 @@@ CBFS (Coreboot Filesystem) suppor
                allows for a "silent" boot where a splash screen is
                loaded very quickly after power-on.
  
+               CONFIG_SPLASHIMAGE_GUARD
+               If this option is set, then U-Boot will prevent the environment
+               variable "splashimage" from being set to a problematic address
+               (see README.displaying-bmps and README.arm-unaligned-accesses).
+               This option is useful for targets where, due to alignment
+               restrictions, an improperly aligned BMP image will cause a data
+               abort. If you think you will not have problems with unaligned
+               accesses (for example because your toolchain prevents them)
+               there is no need to set this option.
                CONFIG_SPLASH_SCREEN_ALIGN
  
                If this option is set the splash image can be freely positioned
                        => vertically centered image
                           at x = dspWidth - bmpWidth - 9
  
+               CONFIG_SPLASH_SCREEN_PREPARE
+               If this option is set then the board_splash_screen_prepare()
+               function, which must be defined in your code, is called as part
+               of the splash screen display sequence. It gives the board an
+               opportunity to prepare the splash image data before it is
+               processed and sent to the frame buffer by U-Boot.
  - Gzip compressed BMP image support: CONFIG_VIDEO_BMP_GZIP
  
                If this option is set, additionally to standard BMP
@@@ -3212,23 -3240,6 +3241,23 @@@ Configuration Settings
        If defined, don't allow the -f switch to env set override variable
        access flags.
  
 +- CONFIG_SYS_GENERIC_BOARD
 +      This selects the architecture-generic board system instead of the
 +      architecture-specific board files. It is intended to move boards
 +      to this new framework over time. Defining this will disable the
 +      arch/foo/lib/board.c file and use common/board_f.c and
 +      common/board_r.c instead. To use this option your architecture
 +      must support it (i.e. must define __HAVE_ARCH_GENERIC_BOARD in
 +      its config.mk file). If you find problems enabling this option on
 +      your board please report the problem and send patches!
 +
 +- CONFIG_SYS_SYM_OFFSETS
 +      This is set by architectures that use offsets for link symbols
 +      instead of absolute values. So bss_start is obtained using an
 +      offset _bss_start_ofs from CONFIG_SYS_TEXT_BASE, rather than
 +      directly. You should not need to touch this setting.
 +
 +
  The following definitions that deal with the placement and management
  of environment data (variable area); in general, we support the
  following configurations:
@@@ -51,13 -51,13 +51,13 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
        __bss_start = .;
        .bss : { *(.bss) }
 -      __bss_end__ = .;
 +      __bss_end = .;
  
        _end = .;
  }
@@@ -51,12 -51,6 +51,6 @@@ SECTION
  
        . = ALIGN(4);
  
-       .u_boot_list : {
-               #include <u-boot.lst>
-       }
-       . = ALIGN(4);
        .rel.dyn : {
                __rel_dyn_start = .;
                *(.rel*)
@@@ -73,7 -67,7 +67,7 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        _end = .;
@@@ -51,12 -51,6 +51,6 @@@ SECTION
  
        . = ALIGN(4);
  
-       .u_boot_list : {
-               #include <u-boot.lst>
-       }
-       . = ALIGN(4);
        .rel.dyn : {
                __rel_dyn_start = .;
                *(.rel*)
@@@ -73,7 -67,7 +67,7 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        _end = .;
index 0000000,69f6d48..b6a929f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,67 +1,67 @@@
 -              __bss_end__ = .;
+ /*
+  * (C) Copyright 2002
+  * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
+  *
+  * (C) Copyright 2010
+  * Texas Instruments, <www.ti.com>
+  *    Aneesh V <aneesh@ti.com>
+  *
+  * See file CREDITS for list of people who contributed to this
+  * project.
+  *
+  * This program is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU General Public License as
+  * published by the Free Software Foundation; either version 2 of
+  * the License, or (at your option) any later version.
+  *
+  * This program is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+  * MA 02111-1307 USA
+  */
+ MEMORY { .sram : ORIGIN = CONFIG_SPL_TEXT_BASE,\
+               LENGTH = CONFIG_SPL_MAX_SIZE }
+ MEMORY { .sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, \
+               LENGTH = CONFIG_SPL_BSS_MAX_SIZE }
+ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+ OUTPUT_ARCH(arm)
+ ENTRY(_start)
+ SECTIONS
+ {
+       .text      :
+       {
+               __start = .;
+               arch/arm/cpu/armv7/start.o      (.text)
+               *(.text*)
+       } >.sram
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram
+       . = ALIGN(4);
+       .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
+       .u_boot_list : {
+               KEEP(*(SORT(.u_boot_list*)));
+       } >.sram
+       . = ALIGN(4);
+       __image_copy_end = .;
+       _end = .;
+       .bss :
+       {
+               . = ALIGN(4);
+               __bss_start = .;
+               *(.bss*)
+               . = ALIGN(4);
++              __bss_end = .;
+       } >.sdram
+ }
@@@ -48,10 -48,6 +48,6 @@@ SECTION
        . = ALIGN(4);
        .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
  
-       .u_boot_list : {
-               #include <u-boot.lst>
-       }
        . = ALIGN(4);
        __image_copy_end = .;
        _end = .;
@@@ -62,6 -58,6 +58,6 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        } >.sdram
  }
@@@ -96,7 -96,7 +96,7 @@@ _image_copy_end_ofs
  
  .globl _bss_end_ofs
  _bss_end_ofs:
 -      .word __bss_end__ - _start
 +      .word __bss_end - _start
  
  .globl _end_ofs
  _end_ofs:
@@@ -309,6 -309,25 +309,25 @@@ ENTRY(cpu_init_cp15
        orr     r0, r0, #0x00001000     @ set bit 12 (I) I-cache
  #endif
        mcr     p15, 0, r0, c1, c0, 0
+ #ifdef CONFIG_ARM_ERRATA_742230
+       mrc     p15, 0, r0, c15, c0, 1  @ read diagnostic register
+       orr     r0, r0, #1 << 4         @ set bit #4
+       mcr     p15, 0, r0, c15, c0, 1  @ write diagnostic register
+ #endif
+ #ifdef CONFIG_ARM_ERRATA_743622
+       mrc     p15, 0, r0, c15, c0, 1  @ read diagnostic register
+       orr     r0, r0, #1 << 6         @ set bit #6
+       mcr     p15, 0, r0, c15, c0, 1  @ write diagnostic register
+ #endif
+ #ifdef CONFIG_ARM_ERRATA_751472
+       mrc     p15, 0, r0, c15, c0, 1  @ read diagnostic register
+       orr     r0, r0, #1 << 11        @ set bit #11
+       mcr     p15, 0, r0, c15, c0, 1  @ write diagnostic register
+ #endif
        mov     pc, lr                  @ back to my caller
  ENDPROC(cpu_init_cp15)
  
@@@ -49,7 -49,7 +49,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
  
        _end = .;
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               __bss_end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
+       }
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
        }
  
        /DISCARD/ : { *(.dynstr*) }
index 0000000,8321afb..3c0d99c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,93 +1,93 @@@
 -              __bss_end__ = .;
+ /*
+  * Copyright (c) 2004-2008 Texas Instruments
+  *
+  * (C) Copyright 2002
+  * Gary Jennejohn, DENX Software Engineering, <garyj@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
+  */
+ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+ OUTPUT_ARCH(arm)
+ ENTRY(_start)
+ SECTIONS
+ {
+       . = 0x00000000;
+       . = ALIGN(4);
+       .text :
+       {
+               __image_copy_start = .;
+               CPUDIR/start.o (.text*)
+               *(.text*)
+       }
+       . = ALIGN(4);
+       .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
+       . = ALIGN(4);
+       .data : {
+               *(.data*)
+       }
+       . = ALIGN(4);
+       . = .;
+       __image_copy_end = .;
+       .rel.dyn : {
+               __rel_dyn_start = .;
+               *(.rel*)
+               __rel_dyn_end = .;
+       }
+       .dynsym : {
+               __dynsym_start = .;
+               *(.dynsym)
+       }
+       _end = .;
+       /*
+        * Deprecated: this MMU section is used by pxa at present but
+        * should not be used by new boards/CPUs.
+        */
+       . = ALIGN(4096);
+       .mmutable : {
+               *(.mmutable)
+       }
+       .bss __rel_dyn_start (OVERLAY) : {
+               __bss_start = .;
+               *(.bss*)
+                . = ALIGN(4);
 -ASSERT(__bss_end__ < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big");
++              __bss_end = .;
+       }
+       /DISCARD/ : { *(.dynstr*) }
+       /DISCARD/ : { *(.dynamic*) }
+       /DISCARD/ : { *(.plt*) }
+       /DISCARD/ : { *(.interp*) }
+       /DISCARD/ : { *(.gnu*) }
+ }
+ #if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE)
++ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big");
+ #endif
diff --combined arch/arm/cpu/u-boot.lds
@@@ -52,7 -52,7 +52,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
                *(.mmutable)
        }
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               __bss_end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
+       }
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
        }
  
        /DISCARD/ : { *(.dynstr*) }
  }
  
  #if defined(CONFIG_SPL_TEXT_BASE) && defined(CONFIG_SPL_MAX_SIZE)
 -ASSERT(__bss_end__ < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big");
 +ASSERT(__bss_end < (CONFIG_SPL_TEXT_BASE + CONFIG_SPL_MAX_SIZE), "SPL image too big");
  #endif
diff --combined arch/arm/lib/Makefile
@@@ -39,10 -39,8 +39,11 @@@ GLCOBJS     += div0.
  SOBJS-y += crt0.o
  
  ifndef CONFIG_SPL_BUILD
 -COBJS-y += bss.o
 +ifndef CONFIG_SYS_GENERIC_BOARD
  COBJS-y       += board.o
 +endif
++COBJS-y += bss.o
 +
  COBJS-y       += bootm.o
  COBJS-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
  SOBJS-$(CONFIG_USE_ARCH_MEMSET) += memset.o
diff --combined arch/arm/lib/bss.c
index 0000000,7c0b154..99eda59
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,39 +1,39 @@@
 -char __bss_end__[0] __attribute__((used, section(".__bss_end__")));
+ /*
+  * Copyright 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
+  *
+  * 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
+  */
+ /**
+  * These two symbols are declared in a C file so that the linker
+  * uses R_ARM_RELATIVE relocation, rather than the R_ARM_ABS32 one
+  * it would use if the symbols were defined in the linker file.
+  * Using only R_ARM_RELATIVE relocation ensures that references to
+  * the symbols are correct after as well as before relocation.
+  *
+  * We need a 0-byte-size type for these symbols, and the compiler
+  * does not allow defining objects of C type 'void'. Using an empty
+  * struct is allowed by the compiler, but causes gcc versions 4.4 and
+  * below to complain about aliasing. Therefore we use the next best
+  * thing: zero-sized arrays, which are both 0-byte-size and exempt from
+  * aliasing warnings.
+  */
+ char __bss_start[0] __attribute__((used, section(".__bss_start")));
++char __bss_end[0] __attribute__((used, section(".__bss_end")));
@@@ -50,7 -50,7 +50,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
@@@ -68,5 -68,5 +68,5 @@@
                *(.bss.*)
        }
        . = ALIGN(8);
 -      __bss_end__ = .;
 +      __bss_end = .;
  }
@@@ -55,7 -55,7 +55,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
@@@ -66,7 -66,7 +66,7 @@@
                __bss_start = .;
                *(.bss)
                 . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
  }
@@@ -48,7 -48,7 +48,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        /* INIT DATA sections - "Small" data (see the gcc -G option)
          *(.scommon)
        }
        . = ALIGN(4);
 -      __bss_end__ = .;
 +      __bss_end = .;
        PROVIDE (end = .);
  
        /* DEBUG -- symbol table, string table, etc. etc.
@@@ -65,7 -65,7 +65,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -89,6 -89,6 +89,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -60,7 -60,7 +60,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -84,7 -84,7 +84,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
  ENTRY(_start)
@@@ -68,7 -68,7 +68,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,7 -93,7 +93,7 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
    . = env_start;
    .ppcenv :
@@@ -68,7 -68,7 +68,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -91,6 -91,6 +91,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -63,7 -63,7 +63,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -87,6 -87,6 +87,6 @@@
     *(.sbss*)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -62,7 -62,7 +62,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -86,6 -86,6 +86,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -63,7 -63,7 +63,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -87,6 -87,6 +87,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -62,7 -62,7 +62,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -86,6 -86,6 +86,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -61,7 -61,7 +61,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -85,7 -85,7 +85,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
  ENTRY(_start)
@@@ -72,7 -72,7 +72,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
    } :bss
  
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -54,7 -54,7 +54,7 @@@ SECTION
        _edata  =  .;
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(8);
@@@ -80,6 -80,6 +80,6 @@@
                *(.sbss*)
                *(.bss*)
        }
 -      __bss_end__ = .;
 +      __bss_end = .;
  }
  ASSERT(__init_end <= (0xfff00000 + RESET_VECTOR_OFFSET), "NAND bootstrap too big");
@@@ -80,7 -80,7 +80,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
    } :bss
  
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -67,7 -67,7 +67,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -90,6 -90,6 +90,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -81,7 -81,7 +81,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
    } :bss
  
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -74,7 -74,7 +74,7 @@@ SECTION
  
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        PROVIDE (reloc_dst_end = .);
@@@ -88,5 -88,5 +88,5 @@@
        }
        PROVIDE (bss_end = .);
  
 -      PROVIDE (__bss_end__ = .);
 +      PROVIDE (__bss_end = .);
  }
@@@ -80,7 -80,7 +80,7 @@@ SECTION
  
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        PROVIDE (reloc_dst_end = .);
@@@ -95,5 -95,5 +95,5 @@@
        }
        PROVIDE (bss_end = .);
  
 -      PROVIDE (__bss_end__ = .);
 +      PROVIDE (__bss_end = .);
  }
@@@ -77,7 -77,7 +77,7 @@@ SECTION
  
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        PROVIDE (reloc_dst_end = .);
@@@ -92,5 -92,5 +92,5 @@@
        }
        PROVIDE (bss_end = .);
  
 -      PROVIDE (__bss_end__ = .);
 +      PROVIDE (__bss_end = .);
  }
diff --combined arch/x86/cpu/u-boot.lds
@@@ -36,7 -36,7 +36,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
@@@ -53,7 -53,6 +53,7 @@@
  
        . = ALIGN(4);
        __data_end = .;
 +      __init_end = .;
  
        . = ALIGN(4);
        .dynsym : { *(.dynsym*) }
@@@ -65,6 -64,9 +65,6 @@@
        . = ALIGN(4);
        _end = .;
  
 -      . = ALIGN(4);
 -
 -      __end = .;
        .bss __rel_dyn_start (OVERLAY) : {
                __bss_start = .;
                *(.bss)
@@@ -68,7 -68,7 +68,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -93,6 -93,6 +93,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -89,7 -89,7 +89,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/RPXlite/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -74,7 -74,7 +74,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -98,6 -98,6 +98,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/actux1/u-boot.lds
@@@ -41,15 -41,15 +41,15 @@@ SECTION
                *(.text*)
        }
  
-       . = ALIGN (4);
+       . = ALIGN(4);
        .rodata : {
                *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
        }
-       . = ALIGN (4);
+       . = ALIGN(4);
        .data : {
                *(.data*)
        }
-       . = ALIGN (4);
+       . = ALIGN(4);
        .got : {
                *(.got)
        }
@@@ -57,7 -57,7 +57,7 @@@
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN (4);
                *(.dynsym)
        }
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       _end = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               _end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
        }
-       __bss_end =.;
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
+       }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
diff --combined board/actux2/u-boot.lds
@@@ -41,15 -41,15 +41,15 @@@ SECTION
                *(.text*)
        }
  
-       . = ALIGN (4);
+       . = ALIGN(4);
        .rodata : {
                *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
        }
-       . = ALIGN (4);
+       . = ALIGN(4);
        .data : {
                *(.data*)
        }
-       . = ALIGN (4);
+       . = ALIGN(4);
        .got : {
                *(.got)
        }
@@@ -57,7 -57,7 +57,7 @@@
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN (4);
                *(.dynsym)
        }
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       _end = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               _end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
        }
-       __bss_end =.;
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
+       }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
diff --combined board/actux3/u-boot.lds
@@@ -57,7 -57,7 +57,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN (4);
                *(.dynsym)
        }
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       _end = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               _end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
        }
-       __bss_end =.;
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
+       }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
diff --combined board/adder/u-boot.lds
@@@ -65,7 -65,7 +65,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -89,7 -89,7 +89,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
  ENTRY(_start)
@@@ -48,10 -48,6 +48,6 @@@ SECTION
        . = ALIGN(4);
        .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
        . = ALIGN(4);
-       .u_boot_list : {
-               #include <u-boot.lst>
-       } >.sram
-       . = ALIGN(4);
        .rel.dyn : {
                __rel_dyn_start = .;
                *(.rel*)
@@@ -69,7 -65,7 +65,7 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        } >.sram
  
        __image_copy_end = .;
@@@ -49,7 -49,7 +49,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        /* INIT DATA sections - "Small" data (see the gcc -G option)
          *(.scommon)
        }
        . = ALIGN(4);
 -      __bss_end__ = .;
 +      __bss_end = .;
        PROVIDE (end = .);
  
        /* DEBUG -- symbol table, string table, etc. etc.
@@@ -74,7 -74,7 +74,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -98,6 -98,6 +98,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -75,7 -75,7 +75,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -99,6 -99,6 +99,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -75,7 -75,7 +75,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -99,6 -99,6 +99,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -74,7 -74,7 +74,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -98,6 -98,6 +98,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -75,7 -75,7 +75,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -99,6 -99,6 +99,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -66,7 -66,7 +66,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -90,6 -90,6 +90,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,6 -97,6 +97,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/cogent/u-boot.lds
@@@ -73,7 -73,7 +73,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -97,6 -97,6 +97,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -77,7 -77,7 +77,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
    } :bss
  
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -49,11 -49,6 +49,6 @@@ SECTION
        .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
  
        . = ALIGN(4);
-       .u_boot_list : {
-               #include <u-boot.lst>
-       } >.sram
-       . = ALIGN(4);
        .rel.dyn : {
                __rel_dyn_start = .;
                *(.rel*)
@@@ -71,7 -66,7 +66,7 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        } >.sram
  
        __image_copy_end = .;
@@@ -58,11 -58,6 +58,6 @@@ SECTION
        }
  
        . = ALIGN(4);
-       .u_boot_list : {
-               #include <u-boot.lst>
-       }
-       . = ALIGN(4);
        __rel_dyn_start = .;
        __rel_dyn_end = .;
        __dynsym_start = .;
@@@ -79,7 -74,7 +74,7 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        _end = .;
diff --combined board/dvlhost/u-boot.lds
@@@ -57,7 -57,7 +57,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN (4);
                *(.dynsym)
        }
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
+       _end = .;
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
                *(.bss*)
                 . = ALIGN(4);
-               _end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
        }
-       __bss_end =.;
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
+       }
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynamic*) }
        /DISCARD/ : { *(.plt*) }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -70,7 -70,7 +70,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -94,6 -94,6 +94,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/ep88x/u-boot.lds
@@@ -65,7 -65,7 +65,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -89,7 -89,7 +89,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
  ENTRY(_start)
@@@ -76,7 -76,7 +76,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -104,7 -104,7 +104,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -68,7 -68,7 +68,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -93,6 -93,6 +93,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -77,7 -77,7 +77,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -73,7 -73,7 +73,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -97,6 -97,6 +97,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/fads/u-boot.lds
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -95,7 -95,7 +95,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
  ENTRY(_start)
diff --combined board/flagadm/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,6 -97,6 +97,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,6 -97,6 +97,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -96,6 -96,6 +96,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -74,7 -74,7 +74,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -99,6 -99,6 +99,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,6 -97,6 +97,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,6 -97,6 +97,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -94,6 -94,6 +94,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -94,6 -94,6 +94,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -94,6 -94,6 +94,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -94,6 -94,6 +94,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -94,6 -94,6 +94,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -60,7 -60,7 +60,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = ALIGN(4);
  
        _end = .;
  
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
-               *(.bss)
+       .bss_start __rel_dyn_start (OVERLAY) : {
+               KEEP(*(.__bss_start));
+       }
+       .bss __bss_start (OVERLAY) : {
+               *(.bss*)
                 . = ALIGN(4);
-               __bss_end = .;
 -               ___bssend___ = .;
++               __bss_end = .;
+       }
 -      .bss_end ___bssend___ (OVERLAY) : {
 -              KEEP(*(.__bss_end__));
++      .bss_end __bss_end (OVERLAY) : {
++              KEEP(*(__bss_end));
        }
  
        /DISCARD/ : { *(.bss*) }
@@@ -88,7 -88,7 +88,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        .data   :
        . = ALIGN(16); /* to speed clearing of bss up */
        }
        __bss_end = . ;
 -      __bss_end__ = . ;
 +      __bss_end = . ;
        PROVIDE (end = .);
  
  /* Relocated into main memory */
@@@ -88,7 -88,7 +88,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        .data   :
        . = ALIGN(16); /* to speed clearing of bss up */
        }
        __bss_end = . ;
 -      __bss_end__ = . ;
 +      __bss_end = . ;
        PROVIDE (end = .);
  
  /* Relocated into main memory */
@@@ -88,7 -88,7 +88,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        .data   :
        . = ALIGN(16); /* to speed clearing of bss up */
        }
        __bss_end = . ;
 -      __bss_end__ = . ;
 +      __bss_end = . ;
        PROVIDE (end = .);
  
  /* Relocated into main memory */
@@@ -87,7 -87,7 +87,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        .data   :
        . = ALIGN(16); /* to speed clearing of bss up */
        }
        __bss_end = . ;
 -      __bss_end__ = . ;
 +      __bss_end = . ;
        PROVIDE (end = .);
  
  /* Relocated into main memory */
@@@ -87,7 -87,7 +87,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        .data   :
        . = ALIGN(16); /* to speed clearing of bss up */
        }
        __bss_end = . ;
 -      __bss_end__ = . ;
 +      __bss_end = . ;
        PROVIDE (end = .);
  
  /* Relocated into main memory */
@@@ -73,7 -73,7 +73,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-               #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -97,7 -97,7 +97,7 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  
    .ppcenv:
diff --combined board/gen860t/u-boot.lds
@@@ -74,7 -74,7 +74,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -98,6 -98,6 +98,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/genietv/u-boot.lds
@@@ -83,7 -83,7 +83,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
      common/env_embedded.o (.ppcenv)
    }
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/hermes/u-boot.lds
@@@ -75,7 -75,7 +75,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -99,6 -99,6 +99,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/hymod/u-boot.lds
@@@ -113,7 -113,7 +113,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
      common/env_embedded.o (.ppcenv)
    }
    . = ALIGN(4);
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/icu862/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/idmr/u-boot.lds
@@@ -68,7 -68,7 +68,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
@@@ -93,6 -93,6 +93,6 @@@
     . = ALIGN(4);
     _ebss = .;
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/ip860/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/ivm/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -110,7 -110,7 +110,7 @@@ SECTION
    . = .;
  
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/lwmon/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -96,6 -96,6 +96,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -77,7 -77,7 +77,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(.sbss*)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/mbx8xx/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/mousse/u-boot.lds
@@@ -63,7 -63,7 +63,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -88,6 -88,6 +88,6 @@@
     . = ALIGN(4);
    }
  
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/mvblue/u-boot.lds
@@@ -73,7 -73,7 +73,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -97,6 -97,6 +97,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/netta/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/netta2/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/netvia/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/nx823/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/quantum/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/r360mpi/u-boot.lds
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -95,7 -95,7 +95,7 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
    . = ALIGN(128 * 1024);
    .ppcenv     :
diff --combined board/rbc823/u-boot.lds
@@@ -80,7 -80,7 +80,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
    . = .;
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -78,7 -78,7 +78,7 @@@ SECTION
        PROVIDE (_egot = .);
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        PROVIDE (reloc_dst_end = .);
@@@ -93,5 -93,5 +93,5 @@@
        }
        PROVIDE (bss_end = .);
  
 -      PROVIDE (__bss_end__ = .);
 +      PROVIDE (__bss_end = .);
  }
@@@ -79,7 -79,7 +79,7 @@@ SECTION
  
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        PROVIDE (reloc_dst_end = .);
@@@ -94,5 -94,5 +94,5 @@@
        }
        PROVIDE (bss_end = .);
  
 -      PROVIDE (__bss_end__ = .);
 +      PROVIDE (__bss_end = .);
  }
@@@ -100,7 -100,7 +100,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -49,7 -49,7 +49,7 @@@ SECTION
        . = ALIGN(4);
  
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        } >.sram
        . = ALIGN(4);
  
@@@ -66,6 -66,6 +66,6 @@@
                __bss_start = .;
                *(.bss*)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        } >.sram
  }
@@@ -50,7 -50,7 +50,7 @@@ SECTION
  
        . = align(4);
        .u_boot_list : {
-               #include <u-boot.lst>
+               KEEP(*(SORT(.u_boot_list*)));
        }
  
        . = align(4);
@@@ -75,7 -75,7 +75,7 @@@
                __bss_start = .;
                *(.bss)
                . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        /DISCARD/ : { *(.dynstr*) }
@@@ -71,7 -71,7 +71,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -95,6 -95,6 +95,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/sixnet/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -72,7 -72,7 +72,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -96,6 -96,6 +96,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/spc1920/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/spd8xx/u-boot.lds
@@@ -78,7 -78,7 +78,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -86,7 -86,7 +86,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -82,7 -82,7 +82,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
diff --combined board/v37/u-boot.lds
@@@ -69,7 -69,7 +69,7 @@@ SECTION
  
    . = ALIGN(4);
    .u_boot_list : {
-       #include <u-boot.lst>
+       KEEP(*(SORT(.u_boot_list*)));
    }
  
  
@@@ -93,6 -93,6 +93,6 @@@
     *(COMMON)
     . = ALIGN(4);
    }
 -  __bss_end__ = . ;
 +  __bss_end = . ;
    PROVIDE (end = .);
  }
@@@ -57,10 -57,6 +57,6 @@@ SECTION
                *(.data)
        }
  
-       .u_boot_list : {
-               #include <u-boot.lst>
-       }
        . = ALIGN(4);
  
        .rel.dyn : {
@@@ -82,7 -78,7 +78,7 @@@
                __bss_start = .;
                *(.bss)
                 . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        /DISCARD/ : { *(.bss*) }
diff --combined boards.cfg
@@@ -95,6 -95,7 +95,7 @@@ at91sam9g10ek_nandflash      ar
  at91sam9g20ek_dataflash_cs0  arm         arm926ejs   at91sam9260ek       atmel          at91        at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS0
  at91sam9g20ek_dataflash_cs1  arm         arm926ejs   at91sam9260ek       atmel          at91        at91sam9260ek:AT91SAM9G20,SYS_USE_DATAFLASH_CS1
  at91sam9g20ek_nandflash      arm         arm926ejs   at91sam9260ek       atmel          at91        at91sam9260ek:AT91SAM9G20,SYS_USE_NANDFLASH
+ at91sam9g20ek_2mmc_nandflash arm         arm926ejs   at91sam9260ek       atmel          at91        at91sam9260ek:AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH
  at91sam9m10g45ek_nandflash   arm         arm926ejs   at91sam9m10g45ek    atmel          at91        at91sam9m10g45ek:AT91SAM9M10G45,SYS_USE_NANDFLASH
  at91sam9rlek_dataflash       arm         arm926ejs   at91sam9rlek        atmel          at91        at91sam9rlek:AT91SAM9RL,SYS_USE_DATAFLASH
  at91sam9rlek_nandflash       arm         arm926ejs   at91sam9rlek        atmel          at91        at91sam9rlek:AT91SAM9RL,SYS_USE_NANDFLASH
@@@ -233,11 -234,13 +234,13 @@@ integratorap_cm946es         ar
  integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp:CM946ES
  ca9x4_ct_vxp                 arm         armv7       vexpress            armltd
  am335x_evm                   arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1
+ am335x_evm_spiboot           arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1,SPI_BOOT
  am335x_evm_uart1             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL2,CONS_INDEX=2
  am335x_evm_uart2             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL3,CONS_INDEX=3
  am335x_evm_uart3             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL4,CONS_INDEX=4
  am335x_evm_uart4             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL5,CONS_INDEX=5
  am335x_evm_uart5             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL6,CONS_INDEX=6
+ am335x_evm_usbspl            arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1,SPL_USBETH_SUPPORT
  pcm051                       arm         armv7       pcm051              phytec         am33xx      pcm051
  highbank                     arm         armv7       highbank            -              highbank
  mx51_efikamx                 arm         armv7       mx51_efikamx        genesi         mx5           mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
@@@ -254,6 -257,12 +257,12 @@@ mx6qsabreauto                ar
  mx6qsabrelite                arm         armv7       mx6qsabrelite       freescale      mx6           mx6qsabrelite:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg
  mx6qsabresd                  arm         armv7       mx6qsabresd         freescale      mx6           mx6qsabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg
  eco5pk                       arm         armv7       eco5pk              8dtech         omap3
+ nitrogen6dl                  arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024
+ nitrogen6dl2g                arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048
+ nitrogen6q                   arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024
+ nitrogen6q2g                 arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048
+ nitrogen6s                   arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512
+ nitrogen6s1g                 arm         armv7       nitrogen6x          boundary       mx6           nitrogen6x:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024
  cm_t35                       arm         armv7       cm_t35              -              omap3
  omap3_overo                  arm         armv7       overo               -              omap3
  omap3_pandora                arm         armv7       pandora             -              omap3
@@@ -262,6 -271,7 +271,7 @@@ igep0020                     ar
  igep0020_nand                arm         armv7       igep00x0            isee           omap3         igep00x0:MACH_TYPE=MACH_TYPE_IGEP0020,BOOT_NAND
  igep0030                     arm         armv7       igep00x0            isee           omap3         igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND
  igep0030_nand                arm         armv7       igep00x0            isee           omap3         igep00x0:MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND
+ igep0032                     arm         armv7       igep00x0            isee           omap3         igep00x0:MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND
  am3517_evm                   arm         armv7       am3517evm           logicpd        omap3
  mt_ventoux                   arm         armv7       mt_ventoux          teejet         omap3
  omap3_zoom1                  arm         armv7       zoom1               logicpd        omap3
@@@ -282,6 -292,7 +292,7 @@@ nokia_rx51                   ar
  omap4_panda                  arm         armv7       panda               ti             omap4
  omap4_sdp4430                arm         armv7       sdp4430             ti             omap4
  omap5_evm                    arm         armv7       omap5_evm           ti           omap5
+ dra7xx_evm                 arm         armv7       dra7xx              ti             omap5
  s5p_goni                     arm         armv7       goni                samsung        s5pc1xx
  smdkc100                     arm         armv7       smdkc100            samsung        s5pc1xx
  origen                             arm         armv7       origen              samsung        exynos
@@@ -301,6 -312,7 +312,7 @@@ snowball                     ar
  kzm9g                        arm         armv7       kzm9g               kmc            rmobile
  armadillo-800eva             arm         armv7       armadillo-800eva    atmark-techno  rmobile
  zynq                         arm         armv7       zynq                xilinx         zynq
+ zynq_dcc                     arm         armv7       zynq                xilinx         zynq        zynq:ZYNQ_DCC
  socfpga_cyclone5                arm         armv7          socfpga_cyclone5    altera             socfpga
  actux1_4_16                  arm         ixp         actux1              -              -           actux1:FLASH2X2
  actux1_4_32                  arm         ixp         actux1              -              -           actux1:FLASH2X2,RAM_32MB
@@@ -465,6 -477,8 +477,6 @@@ openrisc-generic             openris
  EVB64260                     powerpc     74xx_7xx    evb64260            -              -           EVB64260
  EVB64260_750CX               powerpc     74xx_7xx    evb64260            -              -           EVB64260
  P3G4                         powerpc     74xx_7xx    evb64260
 -PCIPPC2                      powerpc     74xx_7xx    pcippc2
 -PCIPPC6                      powerpc     74xx_7xx    pcippc2
  ppmc7xx                      powerpc     74xx_7xx
  ZUMA                         powerpc     74xx_7xx    evb64260
  ELPPC                        powerpc     74xx_7xx    elppc               eltec
@@@ -479,12 -493,10 +491,12 @@@ aria                         powerp
  mecp5123                     powerpc     mpc512x     -                   esd
  mpc5121ads                   powerpc     mpc512x     mpc5121ads          freescale
  mpc5121ads_rev2              powerpc     mpc512x     mpc5121ads          freescale      -           mpc5121ads:MPC5121ADS_REV2
 +ac14xx                       powerpc     mpc512x     ac14xx              ifm
  cmi_mpc5xx                   powerpc     mpc5xx      cmi
  PATI                         powerpc     mpc5xx      pati                mpl
  a3m071                       powerpc     mpc5xxx     a3m071
  a4m072                       powerpc     mpc5xxx     a4m072
 +a4m2k                        powerpc     mpc5xxx     a3m071              -              -           a3m071:A4M2K
  BC3450                       powerpc     mpc5xxx     bc3450
  canmb                        powerpc     mpc5xxx
  cm5200                       powerpc     mpc5xxx
diff --combined config.mk
+++ b/config.mk
@@@ -23,8 -23,6 +23,6 @@@
  
  #########################################################################
  
- include $(TOPDIR)/helper.mk
  ifeq ($(CURDIR),$(SRCTREE))
  dir :=
  else
@@@ -221,14 -219,6 +219,14 @@@ ifeq ($(CONFIG_SPL_BUILD),y
  CPPFLAGS += -DCONFIG_SPL_BUILD
  endif
  
 +# Does this architecture support generic board init?
 +ifeq ($(__HAVE_ARCH_GENERIC_BOARD),)
 +ifneq ($(CONFIG_SYS_GENERIC_BOARD),)
 +$(error Your architecture does not support generic board. Please undefined \
 +CONFIG_SYS_GENERIC_BOARD in your board config file)
 +endif
 +endif
 +
  ifneq ($(RESET_VECTOR_ADDRESS),)
  CPPFLAGS += -DRESET_VECTOR_ADDRESS=$(RESET_VECTOR_ADDRESS)
  endif
diff --combined doc/README.scrapyard
@@@ -9,85 -9,84 +9,86 @@@ maintain a list of such former fellows
  easily if here is something they might want to dig for...
  
  
- Board Arch    CPU     removed     Commit      last known maintainer/contact
- =============================================================================
- AMX860        powerpc mpc860  -         -             Wolfgang Denk <wd@denx.de>
- c2mon powerpc mpc855  -         -             Wolfgang Denk <wd@denx.de>
- ETX094        powerpc mpc850  -         -             Wolfgang Denk <wd@denx.de>
- IAD210        powerpc mpc860  -         -             -
- LANTEC        powerpc mpc850  -         -             Wolfgang Denk <wd@denx.de>
- SCM   powerpc mpc8260 -         -             Wolfgang Grandegger <wg@denx.de>
- SX1   arm     arm925t -         -
- TQM85xx       powerpc MPC85xx d923a5d5  2012-10-04    Stefan Roese <sr@denx.de>
- apollon arm     omap24xx 535c74f  2012-09-18    Kyungmin Park <kyungmin.park@samsung.com>
- tb0229        mips    mips32  3f3110d   2011-12-12
- rmu   powerpc MPC850  fb82fd7   2011-12-07    Wolfgang Denk <wd@denx.de>
- OXC   powerpc MPC8240 309a292   2011-12-07
- BAB7xx        powerpc MPC740/MPC750 c53043b 2011-12-07 Frank Gottschling <fgottschling@eltec.de>
- xm250   arm     pxa     c746cdd   2011-25-11
- pleb2   arm     pxa     b185a1c   2011-25-11
- cradle  arm     pxa     4e24f8a   2011-25-11    Kyle Harris <kharris@nexus-tech.net>
- cerf250 arm     pxa     a3f1241   2011-25-11    Prakash Kumar <prakash@embedx.com>
- mpq101        powerpc mpc85xx e877fab   2011-10-23    Alex Dubov <oakad@yahoo.com>
- ixdpg425 arm  ixp     0ca8eb7   2011-09-22    Stefan Roese <sr@denx.de>
- ixdp425 arm   ixp     0ca8eb7   2011-09-22    Kyle Harris <kharris@nexus-tech.net>
- zylonite arm  pxa     b66521a   2011-09-05
- shannon arm   sa1100  5df092d   2011-09-05    Rolf Offermanns <rof@sysgo.de>
- modnet50 arm  arm720t 9c62815   2011-09-05    Thomas Elste <info@elste.org>
- lpc2292sodimm arm arm720t d1a067a  2011-09-05
- lart  arm     sa1100  3d57573   2011-09-05    Alex Züpke <azu@sysgo.de>
- impa7 arm     arm720t c1f8750   2011-09-05    Marius Gröger <mag@sysgo.de>
- gcplus        arm     sa1100  2c650e2   2011-09-05    George G. Davis <gdavis@mvista.com>
- evb4510       arm     arm720t 26e670e   2011-09-05    Curt Brune <curt@cucy.com>
- ep7312        arm     arm720t c8f63b4   2011-09-05    Marius Gröger <mag@sysgo.de>
- dnp1110       arm     sa1100  fc5e5ce   2011-09-05    Alex Züpke <azu@sysgo.de>
- SMN42 arm     arm720t 6aac646   2011-09-05
- at91rm9200dk arm arm920t 1c85752  2011-07-17
- m501sk        arm     arm920t b1a2bd4   2011-07-17
- kb9202        arm     arm920t 5bd3814   2011-07-17
- csb637        arm     arm920t d14af08   2011-07-17
- cmc_pu2       arm     arm920t 37a9b4d   2011-07-17
- at91cap9adk arm       arm926ejs b550834 2011-07-17    Stelian Pop <stelian@popies.net>
- voiceblue arm arm925t 1b793a4   2011-07-17
- smdk2400 arm  arm920t ad218a8   2011-07-17    Gary Jennejohn <garyj@denx.de>
- sbc2410x arm  arm920t 1f7f0ed   2011-07-17
- netstar       arm     arm925t 6ea2405   2011-07-17
- mx1fs2        arm     arm920t 6962419   2011-07-17
- lpd7a404 arm  lh7a40x 957731e   2011-07-17
- edb9301       arm     arm920t 716f7ad   2011-07-17
- edb9302       arm     arm920t 716f7ad   2011-07-17
- edb9302a arm  arm920t 716f7ad   2011-07-17
- edb9307        arm    arm920t 716f7ad   2011-07-17
- edb9307a arm  arm920t 716f7ad   2011-07-17
- edb9312       arm     arm920t 716f7ad   2011-07-17
- edb9315       arm     arm920t 716f7ad   2011-07-17
- edb9315a arm  arm920t 716f7ad   2011-07-17
- B2    arm     s3c44b0 5dcf536   2011-07-16    Andrea Scian <andrea.scian@dave-tech.it>
- armadillo arm arm720t be28857   2011-07-16    Rowel Atienza <rowel@diwalabs.com>
- assabet       arm     sa1100  c91e90d   2011-07-16    George G. Davis <gdavis@mvista.com>
- trab  arm     S3C2400 566e5cf   2011-05-01    Gary Jennejohn <garyj@denx.de>
- xsengine ARM  PXA2xx  4262a7c   2010-10-20
- wepep250 ARM  PXA2xx  7369478   2010-10-20    Peter Figuli <peposh@etc.sk>
- delta ARM     PXA2xx  75e2035   2010-10-20
- mp2usb        ARM     AT91RM2900  ee986e2 2011-01-25  Eric Bénard <eric@eukrea.com>
- barco powerpc MPC8245 afaa27b   2010-11-23    Marc Leeman <marc.leeman@barco.com>
- ERIC  powerpc 405GP   d9ba451   2010-11-21    Swen Anderson <sand@peppercon.de>
- VoVPN-GW_100MHz       powerpc MPC8260 26fe3d2 2010-10-24      Juergen Selent <j.selent@elmeg.de>
- NC650 powerpc MPC852  333d86d   2010-10-19    Wolfgang Denk <wd@denx.de>
- CP850 powerpc MPC852  333d86d   2010-10-19    Wolfgang Denk <wd@denx.de>
- logodl        ARM     PXA2xx  059e778   2010-10-18    August Hoeraendl <august.hoerandl@gmx.at>
- CCM   powerpc MPC860  dff07e1   2010-10-06    Wolfgang Grandegger <wg@denx.de>
- PCU_E powerpc MPC860T 544d97e   2010-10-06    Wolfgang Denk <wd@denx.de>
- spieval       powerpc MPC5200 69434e4   2010-09-19
- smmaco4       powerpc MPC5200 9ddc3af   2010-09-19
- HMI10 powerpc MPC823  77efe35   2010-09-19    Wolfgang Denk <wd@denx.de>
- GTH   powerpc MPC860  0fe247b   2010-07-17    Thomas Lange <thomas@corelatus.se>
- AmigaOneG3SE          953b7e6   2010-06-23
- suzaku        microblaze      4f18060   2009-10-03    Yasushi Shoji <yashi@atmark-techno.com>
- XUPV2P        microblaze      8fab49e   2008-12-10    Michal Simek <monstr@monstr.eu>
- MVS1  powerpc MPC823  306620b   2008-08-26    Andre Schwarz <andre.schwarz@matrix-vision.de>
- adsvix        ARM     PXA27x  7610db1   2008-07-30    Adrian Filipi <adrian.filipi@eurotech.com>
- R5200 ColdFire        48ead7a   2008-03-31    Zachary P. Landau <zachary.landau@labxtechnologies.com>
- CPCI440       powerpc 440GP   b568fd2   2007-12-27    Matthias Fuchs <matthias.fuchs@esd-electronics.com>
- PCIPPC2       powerpc MPC740/MPC750 -   -             Wolfgang Denk <wd@denx.de>
+ Board            Arch        CPU            Commit      Removed     Last known maintainer/contact
+ =================================================================================================
+ ns9750dev        arm         arm926ejs      -           -           Markus Pietrek <mpietrek@fsforth.de>
+ AMX860           powerpc     mpc860         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
+ c2mon            powerpc     mpc855         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
+ ETX094           powerpc     mpc850         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
+ IAD210           powerpc     mpc860         1b0757e     2012-10-28  -
+ LANTEC           powerpc     mpc850         1b0757e     2012-10-28  Wolfgang Denk <wd@denx.de>
+ SCM              powerpc     mpc8260        1b0757e     2012-10-28  Wolfgang Grandegger <wg@denx.de>
+ SX1              arm         arm925t        53c4154     2012-10-26
+ TQM85xx          powerpc     MPC85xx        d923a5d     2012-10-04  Stefan Roese <sr@denx.de>
+ apollon          arm         omap24xx       535c74f     2012-09-18  Kyungmin Park <kyungmin.park@samsung.com>
+ tb0229           mips        mips32         3f3110d     2011-12-12
+ rmu              powerpc     MPC850         fb82fd7     2011-12-07  Wolfgang Denk <wd@denx.de>
+ OXC              powerpc     MPC8240        309a292     2011-12-07
+ BAB7xx           powerpc     MPC740/MPC750  c53043b     2011-12-07  Frank Gottschling <fgottschling@eltec.de>
+ xm250            arm         pxa            c746cdd     2011-25-11
+ pleb2            arm         pxa            b185a1c     2011-25-11
+ cradle           arm         pxa            4e24f8a     2011-25-11  Kyle Harris <kharris@nexus-tech.net>
+ cerf250          arm         pxa            a3f1241     2011-25-11  Prakash Kumar <prakash@embedx.com>
+ mpq101           powerpc     mpc85xx        e877fab     2011-10-23  Alex Dubov <oakad@yahoo.com>
+ ixdpg425         arm         ixp            0ca8eb7     2011-09-22  Stefan Roese <sr@denx.de>
+ ixdp425          arm         ixp            0ca8eb7     2011-09-22  Kyle Harris <kharris@nexus-tech.net>
+ zylonite         arm         pxa            b66521a     2011-09-05
+ shannon          arm         sa1100         5df092d     2011-09-05  Rolf Offermanns <rof@sysgo.de>
+ modnet50         arm         arm720t        9c62815     2011-09-05  Thomas Elste <info@elste.org>
+ lpc2292sodimm    arm         arm720t        d1a067a     2011-09-05
+ lart             arm         sa1100         3d57573     2011-09-05  Alex Züpke <azu@sysgo.de>
+ impa7            arm         arm720t        c1f8750     2011-09-05  Marius Gröger <mag@sysgo.de>
+ gcplus           arm         sa1100         2c650e2     2011-09-05  George G. Davis <gdavis@mvista.com>
+ evb4510          arm         arm720t        26e670e     2011-09-05  Curt Brune <curt@cucy.com>
+ ep7312           arm         arm720t        c8f63b4     2011-09-05  Marius Gröger <mag@sysgo.de>
+ dnp1110          arm         sa1100         fc5e5ce     2011-09-05  Alex Züpke <azu@sysgo.de>
+ SMN42            arm         arm720t        6aac646     2011-09-05
+ at91rm9200dk     arm         arm920t        1c85752     2011-07-17
+ m501sk           arm         arm920t        b1a2bd4     2011-07-17
+ kb9202           arm         arm920t        5bd3814     2011-07-17
+ csb637           arm         arm920t        d14af08     2011-07-17
+ cmc_pu2          arm         arm920t        37a9b4d     2011-07-17
+ at91cap9adk      arm         arm926ejs      b550834     2011-07-17  Stelian Pop <stelian@popies.net>
+ voiceblue        arm         arm925t        1b793a4     2011-07-17
+ smdk2400         arm         arm920t        ad218a8     2011-07-17  Gary Jennejohn <garyj@denx.de>
+ sbc2410x         arm         arm920t        1f7f0ed     2011-07-17
+ netstar          arm         arm925t        6ea2405     2011-07-17
+ mx1fs2           arm         arm920t        6962419     2011-07-17
+ lpd7a404         arm         lh7a40x        957731e     2011-07-17
+ edb9301          arm         arm920t        716f7ad     2011-07-17
+ edb9302          arm         arm920t        716f7ad     2011-07-17
+ edb9302a         arm         arm920t        716f7ad     2011-07-17
+ edb9307          arm         arm920t        716f7ad     2011-07-17
+ edb9307a         arm         arm920t        716f7ad     2011-07-17
+ edb9312          arm         arm920t        716f7ad     2011-07-17
+ edb9315          arm         arm920t        716f7ad     2011-07-17
+ edb9315a         arm         arm920t        716f7ad     2011-07-17
+ B2               arm         s3c44b0        5dcf536     2011-07-16  Andrea Scian <andrea.scian@dave-tech.it>
+ armadillo        arm         arm720t        be28857     2011-07-16  Rowel Atienza <rowel@diwalabs.com>
+ assabet          arm         sa1100         c91e90d     2011-07-16  George G. Davis <gdavis@mvista.com>
+ trab             arm         S3C2400        566e5cf     2011-05-01  Gary Jennejohn <garyj@denx.de>
+ xsengine         ARM         PXA2xx         4262a7c     2010-10-20
+ wepep250         ARM         PXA2xx         7369478     2010-10-20  Peter Figuli <peposh@etc.sk>
+ delta            ARM         PXA2xx         75e2035     2010-10-20
+ mp2usb           ARM         AT91RM2900     ee986e2     2011-01-25  Eric Bénard <eric@eukrea.com>
+ barco            powerpc     MPC8245        afaa27b     2010-11-23  Marc Leeman <marc.leeman@barco.com>
+ ERIC             powerpc     405GP          d9ba451     2010-11-21  Swen Anderson <sand@peppercon.de>
+ VoVPN-GW_100MHz  powerpc     MPC8260        26fe3d2     2010-10-24  Juergen Selent <j.selent@elmeg.de>
+ NC650            powerpc     MPC852         333d86d     2010-10-19  Wolfgang Denk <wd@denx.de>
+ CP850            powerpc     MPC852         333d86d     2010-10-19  Wolfgang Denk <wd@denx.de>
+ logodl           ARM         PXA2xx         059e778     2010-10-18  August Hoeraendl <august.hoerandl@gmx.at>
+ CCM              powerpc     MPC860         dff07e1     2010-10-06  Wolfgang Grandegger <wg@denx.de>
+ PCU_E            powerpc     MPC860T        544d97e     2010-10-06  Wolfgang Denk <wd@denx.de>
+ spieval          powerpc     MPC5200        69434e4     2010-09-19
+ smmaco4          powerpc     MPC5200        9ddc3af     2010-09-19
+ HMI10            powerpc     MPC823         77efe35     2010-09-19  Wolfgang Denk <wd@denx.de>
+ GTH              powerpc     MPC860         0fe247b     2010-07-17  Thomas Lange <thomas@corelatus.se>
+ AmigaOneG3SE     powerpc     74xx_7xx       953b7e6     2010-06-23
+ suzaku           microblaze  -              4f18060     2009-10-03  Yasushi Shoji <yashi@atmark-techno.com>
+ XUPV2P           microblaze  -              8fab49e     2008-12-10  Michal Simek <monstr@monstr.eu>
+ MVS1             powerpc     MPC823         306620b     2008-08-26  Andre Schwarz <andre.schwarz@matrix-vision.de>
+ adsvix           ARM         PXA27x         7610db1     2008-07-30  Adrian Filipi <adrian.filipi@eurotech.com>
+ R5200            ColdFire    -              48ead7a     2008-03-31  Zachary P. Landau <zachary.landau@labxtechnologies.com>
+ CPCI440          powerpc     440GP          b568fd2     2007-12-27  Matthias Fuchs <matthias.fuchs@esd-electronics.com>
++PCIPPC2          powerpc     MPC740/MPC750  7c9e89b     2013-02-07  Wolfgang Denk <wd@denx.de>
 +PCIPPC6       powerpc MPC740/MPC750 -   -             Wolfgang Denk <wd@denx.de>
@@@ -21,8 -21,8 +21,8 @@@
   * MA 02111-1307 USA
   */
  
- #ifndef __TEGRA_COMMON_H
- #define __TEGRA_COMMON_H
+ #ifndef _TEGRA_COMMON_H_
+ #define _TEGRA_COMMON_H_
  #include <asm/sizes.h>
  #include <linux/stringify.h>
  
  #define CONFIG_SYS_MALLOC_LEN         (4 << 20)       /* 4MB  */
  
  /*
-  * PllX Configuration
+  * NS16550 Configuration
   */
- #define CONFIG_SYS_CPU_OSC_FREQUENCY  1000000 /* Set CPU clock to 1GHz */
  #define CONFIG_SYS_NS16550
  #define CONFIG_SYS_NS16550_SERIAL
  #define CONFIG_SYS_NS16550_REG_SIZE   (-4)
  #define CONFIG_COMMAND_HISTORY
  #define CONFIG_AUTO_COMPLETE
  
+ /* turn on commonly used storage-related commands */
+ #define CONFIG_DOS_PARTITION
+ #define CONFIG_EFI_PARTITION
+ #define CONFIG_PARTITION_UUIDS
+ #define CONFIG_FS_EXT4
+ #define CONFIG_FS_FAT
+ #define CONFIG_CMD_EXT2
+ #define CONFIG_CMD_FAT
+ #define CONFIG_CMD_FS_GENERIC
+ #define CONFIG_CMD_PART
  #define CONFIG_SYS_NO_FLASH
  
  #define CONFIG_CONSOLE_MUX
  #define CONFIG_SPL_SERIAL_SUPPORT
  #define CONFIG_SPL_GPIO_SUPPORT
  
 +#define CONFIG_SYS_GENERIC_BOARD
+ /* Misc utility code */
+ #define CONFIG_BOUNCE_BUFFER
  
  #endif /* _TEGRA_COMMON_H_ */
@@@ -49,7 -49,7 +49,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-               #include <u-boot.lst>
+               *(SORT(.u_boot_list*));
        }
  
        . = ALIGN(4);
@@@ -73,7 -73,7 +73,7 @@@
                __bss_start = .;
                *(.bss)
                 . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        /DISCARD/ : { *(.bss*) }
@@@ -49,7 -49,7 +49,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+       *(SORT(.u_boot_list*));
        }
  
        . = ALIGN(4);
@@@ -71,7 -71,7 +71,7 @@@
                __bss_start = .;
                *(.bss)
                 . = ALIGN(4);
 -              __bss_end__ = .;
 +              __bss_end = .;
        }
  
        /DISCARD/ : { *(.bss*) }
@@@ -53,7 -53,7 +53,7 @@@ SECTION
  
        . = ALIGN(4);
        .u_boot_list : {
-       #include <u-boot.lst>
+       *(SORT(.u_boot_list*));
        }
  
        . = ALIGN(4);
@@@ -75,6 -75,6 +75,6 @@@
        __bss_start = .;
        *(.bss)
        . = ALIGN(4);
 -      __bss_end__ = .;
 +      __bss_end = .;
        }
  }