summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/start.S
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2012-08-22 15:31:05 -0700
committerTom Rini <trini@ti.com>2012-09-27 09:49:59 -0700
commit6507f133f3201ed5fb22e4a3d73c33b47497539d (patch)
treebd9cc293fbd27e5e0ce75b26fa58c8065d450f4a /arch/arm/cpu/armv7/start.S
parent47f7bcae8c0de8b2a8af7ca309744f041a6d1424 (diff)
downloadu-boot-imx-6507f133f3201ed5fb22e4a3d73c33b47497539d.zip
u-boot-imx-6507f133f3201ed5fb22e4a3d73c33b47497539d.tar.gz
u-boot-imx-6507f133f3201ed5fb22e4a3d73c33b47497539d.tar.bz2
SPL: Create arch/arm/lib/spl.c for board_init_f and jump_to_image_linux
In SPL (CONFIG_SPL_FRAMEWORK) board_init_f must setup the stack pointer, clear the BSS and call board_init_r. We mark this as weak as some platforms may need to perform additional initalization at this point. We provide a gd that we know will be in a usable location, once the BSS has been cleared to help with this as well. Finally, we no longer call relocate_code so remove that from the armv7 version. Next, both board_init_f and jump_to_image_linux are going to be inherently arch-specific, so move these versions to arch/arm/lib/spl.c Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'arch/arm/cpu/armv7/start.S')
-rw-r--r--arch/arm/cpu/armv7/start.S13
1 files changed, 2 insertions, 11 deletions
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 32658eb..f26308d 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -164,6 +164,7 @@ call_board_init_f:
/*------------------------------------------------------------------------------*/
+#ifndef CONFIG_SPL_BUILD
/*
* void relocate_code (addr_sp, gd, addr_moni)
*
@@ -194,7 +195,6 @@ copy_loop:
cmp r0, r2 /* until source end address [r2] */
blo copy_loop
-#ifndef CONFIG_SPL_BUILD
/*
* fix .rel.dyn relocations
*/
@@ -241,20 +241,12 @@ _rel_dyn_end_ofs:
_dynsym_start_ofs:
.word __dynsym_start - _start
-#endif /* #ifndef CONFIG_SPL_BUILD */
-
clear_bss:
-#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:cmp r0, r1 /* clear loop... */
@@ -281,12 +273,10 @@ jump_2_ram:
* Move vector table
*/
#if !defined(CONFIG_TEGRA20)
-#if !(defined(CONFIG_OMAP44XX) && defined(CONFIG_SPL_BUILD))
/* Set vector address in CP15 VBAR register */
ldr r0, =_start
add r0, r0, r9
mcr p15, 0, r0, c12, c0, 0 @Set VBAR
-#endif
#endif /* !Tegra20 */
ldr r0, _board_init_r_ofs
@@ -302,6 +292,7 @@ jump_2_ram:
_board_init_r_ofs:
.word board_init_r - _start
ENDPROC(relocate_code)
+#endif
/*************************************************************************
*