The way the SPL code is setup right now it only works in the
CONFIG_NAND_SPL case. The chip I'm working on, the lpc313x, can SPL
from six different sources. I've implemented the secondary loader code
in board_init_r in cpu/arm926ejs/lpc313x/spl.c. I needed to modify
start.S so that the jump to board_init_r works correctly in the SPL
case.

Is it possible to merge things further and get rid of this special case?

#ifdef CONFIG_NAND_SPL
        ldr     r0, _nand_boot_ofs
        mov     pc, r0

_nand_boot_ofs:
        .word nand_boot
#else
        ldr     r0, _board_init_r_ofs
        ldr     r1, _TEXT_BASE
        add     lr, r0, r1
        add     lr, lr, r9

---------------------------------------------------------------------------

diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
index 5e30745..0f97979 100644
--- a/arch/arm/cpu/arm926ejs/start.S
+++ b/arch/arm/cpu/arm926ejs/start.S
@@ -64,6 +64,13 @@ _start:
        b       reset
 #endif
 #ifdef CONFIG_SPL_BUILD
+#ifdef CONFIG_LPC313x_BOOT_HEADER
+        .word 0x41676d69        /* image magic number, imgA */
+        .word 0,0,0,0,0
+        .word 0x0000000A        /*Plain text no CRC check*/
+       .word (__initial_boot_image_size)       /* image length */
+        .word 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+#else
 /* No exception handlers in preloader */
        ldr     pc, _hang
        ldr     pc, _hang
@@ -83,6 +90,7 @@ _hang:
        .word   0x12345678
        .word   0x12345678
        .word   0x12345678
+#endif
 #else
        ldr     pc, _undefined_instruction
        ldr     pc, _software_interrupt
@@ -126,7 +134,11 @@ _fiq:

 .globl _TEXT_BASE
 _TEXT_BASE:
+#ifdef CONFIG_SPL_BUILD
+       .word   CONFIG_SPL_TEXT_BASE
+#else
        .word   CONFIG_SYS_TEXT_BASE
+#endif

 /*
  * These are defined in the board-specific linker script.
@@ -210,6 +222,7 @@ relocate_code:
 stack_setup:
        mov     sp, r4

+       mov     r9, #0x00000000         /* relocation offset starts at zero */
        adr     r0, _start
        cmp     r0, r6
        beq     clear_bss               /* skip relocation */


-- 
Jon Smirl
jonsm...@gmail.com
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to