GEC2410 Boot from NAND FLASH.

Signed-off-by: Hui.Tang <zetal...@gmail.com>
---
 cpu/arm920t/start.S |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S
index 114427a..d8b832a 100644
--- a/cpu/arm920t/start.S
+++ b/cpu/arm920t/start.S
@@ -27,6 +27,10 @@
 #include <common.h>
 #include <config.h>
 
+#if !defined(CONFIG_ENABLE_MMU) && !defined(CONFIG_SYS_PHY_UBOOT_BASE)
+#define CONFIG_SYS_PHY_UBOOT_BASE      CONFIG_SYS_UBOOT_BASE
+#endif
+
 /*
  *************************************************************************
  *
@@ -38,6 +42,7 @@
 
 .globl _start
 _start:        b       start_code
+#ifndef CONFIG_NAND_SPL
        ldr     pc, _undefined_instruction
        ldr     pc, _software_interrupt
        ldr     pc, _prefetch_abort
@@ -53,7 +58,13 @@ _data_abort:         .word data_abort
 _not_used:             .word not_used
 _irq:                  .word irq
 _fiq:                  .word fiq
+_pad:                  .word 0x12345678 /* now 16*4=64 */
+#else
+       . = _start + 64
+#endif
 
+.global _end_vect
+_end_vect:
        .balignl 16,0xdeadbeef
 
 
@@ -73,6 +84,14 @@ _fiq:                        .word fiq
 _TEXT_BASE:
        .word   TEXT_BASE
 
+/*
+ * Below variable is very important because we use MMU in U-Boot.
+ * Without it, we cannot run code correctly before MMU is ON.
+ * by scsuh.
+ */
+_TEXT_PHY_BASE:
+       .word   CONFIG_SYS_PHY_UBOOT_BASE
+
 .globl _armboot_start
 _armboot_start:
        .word _start
@@ -114,8 +133,10 @@ start_code:
        orr     r0, r0, #0xd3
        msr     cpsr, r0
 
+#ifndef CONFIG_NAND_SPL
        bl      coloured_LED_init
        bl      red_LED_on
+#endif
 
 #if    defined(CONFIG_AT91RM9200DK) || defined(CONFIG_AT91RM9200EK)
        /*
@@ -176,6 +197,7 @@ copyex:
        bl      cpu_init_crit
 #endif
 
+#ifndef CONFIG_NAND_SPL
 #ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:                              /* relocate U-Boot to RAM           */
        adr     r0, _start              /* r0 <- current position of code   */
@@ -194,9 +216,13 @@ copy_loop:
        cmp     r0, r2                  /* until source end addreee [r2]    */
        ble     copy_loop
 #endif /* CONFIG_SKIP_RELOCATE_UBOOT */
+#endif /* CONFIG_NAND_SPL */
 
        /* Set up the stack                                                 */
 stack_setup:
+#ifdef CONFIG_MEMORY_UPPER_CODE
+       ldr     sp, =(CONFIG_SYS_UBOOT_BASE + CONFIG_SYS_UBOOT_SIZE - 0xc)
+#else
        ldr     r0, _TEXT_BASE          /* upper 128 KiB: relocated uboot   */
        sub     r0, r0, #CONFIG_SYS_MALLOC_LEN  /* malloc area              */
        sub     r0, r0, #CONFIG_SYS_GBL_DATA_SIZE /* bdinfo                 */
@@ -204,6 +230,7 @@ stack_setup:
        sub     r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
 #endif
        sub     sp, r0, #12             /* leave 3 words for abort-stack    */
+#endif /* CONFIG_MEMORY_UPPER_CODE */
 
 clear_bss:
        ldr     r0, _bss_start          /* find start of bss segment        */
@@ -215,9 +242,14 @@ clbss_l:str        r2, [r0]                /* clear 
loop...                    */
        cmp     r0, r1
        ble     clbss_l
 
+#ifndef CONFIG_NAND_SPL
        ldr     pc, _start_armboot
 
 _start_armboot:        .word start_armboot
+#else
+       b       nand_boot
+/*     .word nand_boot */
+#endif
 
 
 /*
@@ -234,6 +266,7 @@ _start_armboot:     .word start_armboot
 
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
 cpu_init_crit:
+#ifndef CONFIG_NAND_SPL
        /*
         * flush v4 I/D caches
         */
@@ -251,6 +284,7 @@ cpu_init_crit:
        orr     r0, r0, #0x00001000     @ set bit 12 (I) I-Cache
        mcr     p15, 0, r0, c1, c0, 0
 
+#endif /* CONFIG_NAND_SPL */
        /*
         * before relocating, we have to setup RAM timing
         * because memory timing is board-dependend, you will
@@ -264,6 +298,7 @@ cpu_init_crit:
        mov     pc, lr
 #endif /* CONFIG_SKIP_LOWLEVEL_INIT */
 
+#ifndef CONFIG_NAND_SPL
 /*
  *************************************************************************
  *
@@ -434,3 +469,4 @@ fiq:
        bl      do_fiq
 
 #endif
+#endif /* CONFIG_NAND_SPL */
-- 
1.6.0.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to