u-boot/arch/arm
Simon Glass db910353a1 arm: spl: Allow board_init_r() to run with a larger stack
At present SPL uses a single stack, either CONFIG_SPL_STACK or
CONFIG_SYS_INIT_SP_ADDR. Since some SPL features (such as MMC and
environment) require a lot of stack, some boards set CONFIG_SPL_STACK to
point into SDRAM. They then set up SDRAM very early, before board_init_f(),
so that the larger stack can be used.

This is an abuse of lowlevel_init(). That function should only be used for
essential start-up code which cannot be delayed. An example of a valid use is
when only part of the SPL code is visible/executable, and the SoC must be set
up so that board_init_f() can be reached. It should not be used for SDRAM
init, console init, etc.

Add a CONFIG_SPL_STACK_R option, which allows the stack to be moved to a new
address before board_init_r() is called in SPL.

The expected SPL flow (for CONFIG_SPL_FRAMEWORK) is documented in the README.

Signed-off-by: Simon Glass <sjg@chromium.org>
For version 1:
Acked-by: Albert ARIBAUD <albert.u.boot@aribaud.net>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Bo Shen <voice.shen@atmel.com>
Acked-by: Bo Shen <voice.shen@atmel.com>
Acked-by: Heiko Schocher <hs@denx.de>
Tested-by: Heiko Schocher <hs@denx.de>

Signed-off-by: Tom Rini <trini@konsulko.com>
2015-03-04 14:55:04 -05:00
..
cpu arm: Reduce the scope of lowlevel_init() 2015-03-04 14:55:04 -05:00
dts ARM: UniPhier: add xHCI device nodes to PH1-Pro4 device tree 2015-03-01 00:02:58 +09:00
imx-common imx: i2c: Zap unnecessary malloc() calls 2014-12-30 14:05:48 +01:00
include arm: spl: Avoid setting up a duplicate global data structure 2015-03-04 14:55:04 -05:00
lib arm: spl: Allow board_init_r() to run with a larger stack 2015-03-04 14:55:04 -05:00
mach-at91 ARM: at91: move SoC headers to mach-at91/include/mach 2015-02-21 08:23:52 -05:00
mach-davinci ARM: davinci: remove hawkboard support 2015-02-24 17:07:29 -05:00
mach-highbank ARM: highbank: move SoC sources to mach-highbank 2015-02-21 08:23:51 -05:00
mach-keystone ARM: keystone: move SoC headers to mach-keystone/include/mach 2015-02-21 08:23:52 -05:00
mach-kirkwood ARM: kirkwood: move SoC headers to mach-kirkwood/include/mach 2015-02-21 08:23:52 -05:00
mach-nomadik ARM: nomadik: move SoC headers to mach-nomadik/include/mach 2015-02-21 08:23:52 -05:00
mach-orion5x ARM: orion5x: move SoC headers to mach-orion5x/include/mach 2015-02-21 08:23:52 -05:00
mach-tegra dm: tegra: Enable driver model in SPL and adjust the GPIO driver 2015-03-04 14:55:04 -05:00
mach-uniphier ARM: UniPhier: remove SSC_WAY_SIZE and SSC_NUM_ENTRIES macros 2015-03-01 00:03:21 +09:00
mach-versatile ARM: versatile: move SoC sources to mach-versatile 2015-02-21 08:23:51 -05:00
mvebu-common arm: mvebu: Add Serdes PHY config code 2015-02-06 17:24:59 +01:00
config.mk arm: build arch memset/memcpy in Thumb2 mode 2015-01-09 10:20:22 -05:00
Kconfig Merge branch 'xnext/zynqmp' of git://www.denx.de/git/u-boot-microblaze 2015-03-02 13:22:12 -05:00
Kconfig.debug arm: debug: add Kconfig entries for lowlevel debug 2014-10-26 22:23:12 +01:00
Makefile ARM: UniPhier: move SoC sources to mach-uniphier 2015-03-01 00:01:56 +09:00