summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/arm926ejs/start.S
diff options
context:
space:
mode:
authorHeiko Schocher <hs@denx.de>2011-11-01 20:00:29 +0000
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2011-11-03 22:56:25 +0100
commit435199f38020c294659a44607ca0e1b6f0ed1542 (patch)
tree373d8b4f4b04e63386572069319508a643566c1f /arch/arm/cpu/arm926ejs/start.S
parent18e8ff18fa3cbd302866bdfd4d510e7cb465c568 (diff)
downloadu-boot-imx-435199f38020c294659a44607ca0e1b6f0ed1542.zip
u-boot-imx-435199f38020c294659a44607ca0e1b6f0ed1542.tar.gz
u-boot-imx-435199f38020c294659a44607ca0e1b6f0ed1542.tar.bz2
arm, davinci: add support for new spl framework
Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Albert ARIBAUD <albert.u.boot@aribaud.net> Cc: Sandeep Paulraj <s-paulraj@ti.com> Cc: Scott Wood <scottwood@freescale.com> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>
Diffstat (limited to 'arch/arm/cpu/arm926ejs/start.S')
-rw-r--r--arch/arm/cpu/arm926ejs/start.S25
1 files changed, 24 insertions, 1 deletions
diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 86a0dc2..339c5ed 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -126,7 +126,15 @@ _fiq:
.globl _TEXT_BASE
_TEXT_BASE:
+#ifdef CONFIG_NAND_SPL /* deprecated, use instead CONFIG_SPL_BUILD */
.word CONFIG_SYS_TEXT_BASE
+#else
+#ifdef CONFIG_SPL_BUILD
+ .word CONFIG_SPL_TEXT_BASE
+#else
+ .word CONFIG_SYS_TEXT_BASE
+#endif
+#endif
/*
* These are defined in the board-specific linker script.
@@ -192,7 +200,15 @@ reset:
/* Set stackpointer in internal RAM to call board_init_f */
call_board_init_f:
+#ifdef CONFIG_NAND_SPL /* deprecated, use instead CONFIG_SPL_BUILD */
+ ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
+#else
+#ifdef CONFIG_SPL_BUILD
+ ldr sp, =(CONFIG_SPL_STACK)
+#else
ldr sp, =(CONFIG_SYS_INIT_SP_ADDR)
+#endif
+#endif
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000
bl board_init_f
@@ -217,6 +233,7 @@ stack_setup:
mov sp, r4
adr r0, _start
+ sub r9, r6, r0 /* r9 <- relocation offset */
cmp r0, r6
beq clear_bss /* skip relocation */
mov r1, r6 /* r1 <- scratch for copy loop */
@@ -271,12 +288,17 @@ fixnext:
#endif
clear_bss:
-#ifndef CONFIG_SPL_BUILD
+#ifdef CONFIG_SPL_BUILD
+ /* No relocation for SPL */
+ ldr r0, =__bss_start
+ ldr r1, =__bss_end__
+#else
ldr r0, _bss_start_ofs
ldr r1, _bss_end_ofs
mov r4, r6 /* reloc addr */
add r0, r0, r4
add r1, r1, r4
+#endif
mov r2, #0x00000000 /* clear */
clbss_l:str r2, [r0] /* clear loop... */
@@ -284,6 +306,7 @@ clbss_l:str r2, [r0] /* clear loop... */
cmp r0, r1
bne clbss_l
+#ifndef CONFIG_SPL_BUILD
bl coloured_LED_init
bl red_led_on
#endif