Skip to content
Snippets Groups Projects
Commit db910353 authored by Simon Glass's avatar Simon Glass Committed by Tom Rini
Browse files

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: default avatarSimon Glass <sjg@chromium.org>
For version 1:
Acked-by: default avatarAlbert ARIBAUD <albert.u.boot@aribaud.net>
Reviewed-by: default avatarStefan Roese <sr@denx.de>
Tested-by: default avatarBo Shen <voice.shen@atmel.com>
Acked-by: default avatarBo Shen <voice.shen@atmel.com>
Acked-by: default avatarHeiko Schocher <hs@denx.de>
Tested-by: default avatarHeiko Schocher <hs@denx.de>

Signed-off-by: default avatarTom Rini <trini@konsulko.com>
parent bdfb3416
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment