diff mbox

[U-Boot] ARM: Respect CONFIG_SPL_STACK define in lowlevel_init.S

Message ID 1473046570-13795-1-git-send-email-siarhei.siamashka@gmail.com
State Accepted
Commit 22a402f00c9de841026105baa219a03d2273c01c
Delegated to: Tom Rini
Headers show

Commit Message

Siarhei Siamashka Sept. 5, 2016, 3:36 a.m. UTC
The SPL and U-Boot proper may use different initial stack
locations, which are configured via CONFIG_SPL_STACK and
CONFIG_SYS_INIT_SP_ADDR defines. The lowlevel_init.S
code needs to handle this in the same way as crt0.S

Without this fix, setting the U-Boot stack location to some
place, which is not safely accessible by the SPL (such as
the DRAM), causes a very early SPL deadlock.

Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
---
 arch/arm/cpu/armv7/lowlevel_init.S | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Tom Rini Sept. 8, 2016, 6:13 p.m. UTC | #1
On Mon, Sep 05, 2016 at 06:36:10AM +0300, Siarhei Siamashka wrote:

> The SPL and U-Boot proper may use different initial stack
> locations, which are configured via CONFIG_SPL_STACK and
> CONFIG_SYS_INIT_SP_ADDR defines. The lowlevel_init.S
> code needs to handle this in the same way as crt0.S
> 
> Without this fix, setting the U-Boot stack location to some
> place, which is not safely accessible by the SPL (such as
> the DRAM), causes a very early SPL deadlock.
> 
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Simon Glass Sept. 19, 2016, 12:57 a.m. UTC | #2
On 4 September 2016 at 21:36, Siarhei Siamashka
<siarhei.siamashka@gmail.com> wrote:
> The SPL and U-Boot proper may use different initial stack
> locations, which are configured via CONFIG_SPL_STACK and
> CONFIG_SYS_INIT_SP_ADDR defines. The lowlevel_init.S
> code needs to handle this in the same way as crt0.S
>
> Without this fix, setting the U-Boot stack location to some
> place, which is not safely accessible by the SPL (such as
> the DRAM), causes a very early SPL deadlock.
>
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> ---
>  arch/arm/cpu/armv7/lowlevel_init.S | 4 ++++
>  1 file changed, 4 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini Oct. 8, 2016, 5:04 p.m. UTC | #3
On Mon, Sep 05, 2016 at 06:36:10AM +0300, Siarhei Siamashka wrote:

> The SPL and U-Boot proper may use different initial stack
> locations, which are configured via CONFIG_SPL_STACK and
> CONFIG_SYS_INIT_SP_ADDR defines. The lowlevel_init.S
> code needs to handle this in the same way as crt0.S
> 
> Without this fix, setting the U-Boot stack location to some
> place, which is not safely accessible by the SPL (such as
> the DRAM), causes a very early SPL deadlock.
> 
> Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/lowlevel_init.S b/arch/arm/cpu/armv7/lowlevel_init.S
index 1872c57..658934d 100644
--- a/arch/arm/cpu/armv7/lowlevel_init.S
+++ b/arch/arm/cpu/armv7/lowlevel_init.S
@@ -19,7 +19,11 @@  ENTRY(lowlevel_init)
 	/*
 	 * Setup a temporary stack. Global data is not available yet.
 	 */
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
+	ldr	sp, =CONFIG_SPL_STACK
+#else
 	ldr	sp, =CONFIG_SYS_INIT_SP_ADDR
+#endif
 	bic	sp, sp, #7 /* 8-byte alignment for ABI compliance */
 #ifdef CONFIG_SPL_DM
 	mov	r9, #0