[U-Boot] [RFC PATCH 2/8] armv7: add nand_spl support
John Rigby
john.rigby at linaro.org
Tue Dec 28 01:47:02 CET 2010
Signed-off-by: John Rigby <john.rigby at linaro.org>
---
arch/arm/cpu/armv7/start.S | 45 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index 684f2d2..17b86e1 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -35,6 +35,27 @@
.globl _start
_start: b reset
+#ifdef CONFIG_PRELOADER
+/* No exception handlers in preloader */
+ ldr pc, _hang
+ ldr pc, _hang
+ ldr pc, _hang
+ ldr pc, _hang
+ ldr pc, _hang
+ ldr pc, _hang
+ ldr pc, _hang
+
+_hang:
+ .word do_hang
+/* pad to 64 byte boundary */
+ .word 0x12345678
+ .word 0x12345678
+ .word 0x12345678
+ .word 0x12345678
+ .word 0x12345678
+ .word 0x12345678
+ .word 0x12345678
+#else
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
@@ -54,6 +75,7 @@ _pad: .word 0x12345678 /* now 16*4=64 */
.global _end_vect
_end_vect:
+#endif
.balignl 16,0xdeadbeef
/*************************************************************************
*
@@ -127,7 +149,7 @@ next:
stmia r1!, {r3 - r10} @ copy to target address [r1]
cmp r0, r2 @ until source end address [r2]
bne next @ loop until equal */
-#if !defined(CONFIG_SYS_NAND_BOOT) && !defined(CONFIG_SYS_ONENAND_BOOT)
+#if !defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_ONENAND_U_BOOT)
/* No need to copy/exec the clock code - DPLL adjust already done
* in NAND/oneNAND Boot.
*/
@@ -240,6 +262,13 @@ clbss_l:str r2, [r0] /* clear loop... */
* We are done. Do not return, instead branch to second part of board
* initialization, now running from RAM.
*/
+#ifdef CONFIG_NAND_SPL
+ ldr r0, _nand_boot_ofs
+ mov pc, r0
+
+_nand_boot_ofs:
+ .word nand_boot
+#else
jump_2_ram:
ldr r0, _board_init_r_ofs
adr r1, _start
@@ -253,6 +282,7 @@ jump_2_ram:
_board_init_r_ofs:
.word board_init_r - _start
+#endif
_rel_dyn_start_ofs:
.word __rel_dyn_start - _start
@@ -269,6 +299,7 @@ _dynsym_start_ofs:
* setup memory timing
*
*************************************************************************/
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
cpu_init_crit:
/*
* Invalidate L1 I/D
@@ -297,6 +328,9 @@ cpu_init_crit:
bl lowlevel_init @ go setup pll,mux,memory
mov lr, ip @ restore link
mov pc, lr @ back to my caller
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
+
+#ifndef CONFIG_PRELOADER
/*
*************************************************************************
*
@@ -419,10 +453,18 @@ cpu_init_crit:
.macro get_fiq_stack @ setup FIQ stack
ldr sp, FIQ_STACK_START
.endm
+#endif /* CONFIG_PRELOADER */
/*
* exception handlers
*/
+#ifdef CONFIG_PRELOADER
+ .align 5
+do_hang:
+ ldr sp, _TEXT_BASE /* switch to abort stack */
+1:
+ bl 1b /* hang and never return */
+#else /* !CONFIG_PRELOADER */
.align 5
undefined_instruction:
get_bad_stack
@@ -485,3 +527,4 @@ fiq:
bl do_fiq
#endif
+#endif /* CONFIG_PRELOADER */
--
1.7.3.1.120.g38a18
More information about the U-Boot
mailing list