ARM: Respect CONFIG_SPL_STACK define in lowlevel_init.S
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>
Mon, 5 Sep 2016 03:36:10 +0000 (06:36 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 7 Oct 2016 00:57:36 +0000 (20:57 -0400)
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>
arch/arm/cpu/armv7/lowlevel_init.S

index 1872c57699577bcf107753fb48ff1a2dbde63ac1..658934d664a4ab5827169da13aa2728a395bc171 100644 (file)
@@ -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