]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - arch/arm/lib/crt0.S
arm: spl: Allow board_init_r() to run with a larger stack
[people/ms/u-boot.git] / arch / arm / lib / crt0.S
index 22df3e5b832c31a86cab5bbd2902b83c34a84033..7939cededeb57ddb6fc2e7608e9df223e4828a14 100644 (file)
@@ -113,7 +113,14 @@ here:
 /* Set up final (full) environment */
 
        bl      c_runtime_cpu_setup     /* we still call old routine here */
-
+#endif
+#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_FRAMEWORK)
+# ifdef CONFIG_SPL_BUILD
+       /* Use a DRAM stack for the rest of SPL, if requested */
+       bl      spl_relocate_stack_gd
+       cmp     r0, #0
+       movne   sp, r0
+# endif
        ldr     r0, =__bss_start        /* this is auto-relocated! */
        ldr     r1, =__bss_end          /* this is auto-relocated! */
 
@@ -124,9 +131,10 @@ clbss_l:cmp        r0, r1                  /* while not at end of BSS */
        addlo   r0, r0, #4              /* move to next */
        blo     clbss_l
 
+#if ! defined(CONFIG_SPL_BUILD)
        bl coloured_LED_init
        bl red_led_on
-
+#endif
        /* call board_init_r(gd_t *id, ulong dest_addr) */
        mov     r0, r9                  /* gd_t */
        ldr     r1, [r9, #GD_RELOCADDR] /* dest_addr */
@@ -134,7 +142,6 @@ clbss_l:cmp r0, r1                  /* while not at end of BSS */
        ldr     pc, =board_init_r       /* this is auto-relocated! */
 
        /* we should not return here. */
-
 #endif
 
 ENDPROC(_main)