|
@@ -33,62 +33,47 @@
|
|
|
rte;
|
|
|
|
|
|
#if defined(CONFIG_SERIAL_BOOT)
|
|
|
-#define ASM_DRAMINIT (asm_dram_init - CONFIG_SYS_TEXT_BASE + CONFIG_SYS_INIT_RAM_ADDR)
|
|
|
+#define ASM_DRAMINIT (asm_dram_init - CONFIG_SYS_TEXT_BASE + \
|
|
|
+ CONFIG_SYS_INIT_RAM_ADDR)
|
|
|
#define ASM_DRAMINIT_N (asm_dram_init - CONFIG_SYS_TEXT_BASE)
|
|
|
-#define ASM_SBF_IMG_HDR (asm_sbf_img_hdr - CONFIG_SYS_TEXT_BASE + CONFIG_SYS_INIT_RAM_ADDR)
|
|
|
+#define ASM_SBF_IMG_HDR (asm_sbf_img_hdr - CONFIG_SYS_TEXT_BASE + \
|
|
|
+ CONFIG_SYS_INIT_RAM_ADDR)
|
|
|
#endif
|
|
|
|
|
|
.text
|
|
|
|
|
|
/*
|
|
|
- * Vector table. This is used for initial platform startup.
|
|
|
- * These vectors are to catch any un-intended traps.
|
|
|
+ * Vector table. This is used for initial platform startup.
|
|
|
+ * These vectors are to catch any un-intended traps.
|
|
|
*/
|
|
|
_vectors:
|
|
|
#if defined(CONFIG_SERIAL_BOOT)
|
|
|
|
|
|
-INITSP: .long 0 /* Initial SP */
|
|
|
+INITSP: .long 0 /* Initial SP */
|
|
|
#ifdef CONFIG_CF_SBF
|
|
|
-INITPC: .long ASM_DRAMINIT /* Initial PC */
|
|
|
+INITPC: .long ASM_DRAMINIT /* Initial PC */
|
|
|
#endif
|
|
|
#ifdef CONFIG_SYS_NAND_BOOT
|
|
|
-INITPC: .long ASM_DRAMINIT_N /* Initial PC */
|
|
|
+INITPC: .long ASM_DRAMINIT_N /* Initial PC */
|
|
|
#endif
|
|
|
|
|
|
#else
|
|
|
|
|
|
-INITSP: .long 0 /* Initial SP */
|
|
|
-INITPC: .long _START /* Initial PC */
|
|
|
+INITSP: .long 0 /* Initial SP */
|
|
|
+INITPC: .long _START /* Initial PC */
|
|
|
|
|
|
#endif
|
|
|
|
|
|
-vector02: .long _FAULT /* Access Error */
|
|
|
-vector03: .long _FAULT /* Address Error */
|
|
|
-vector04: .long _FAULT /* Illegal Instruction */
|
|
|
-vector05: .long _FAULT /* Reserved */
|
|
|
-vector06: .long _FAULT /* Reserved */
|
|
|
-vector07: .long _FAULT /* Reserved */
|
|
|
-vector08: .long _FAULT /* Privilege Violation */
|
|
|
-vector09: .long _FAULT /* Trace */
|
|
|
-vector0A: .long _FAULT /* Unimplemented A-Line */
|
|
|
-vector0B: .long _FAULT /* Unimplemented F-Line */
|
|
|
-vector0C: .long _FAULT /* Debug Interrupt */
|
|
|
-vector0D: .long _FAULT /* Reserved */
|
|
|
-vector0E: .long _FAULT /* Format Error */
|
|
|
-vector0F: .long _FAULT /* Unitialized Int. */
|
|
|
+vector02_0F:
|
|
|
+.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
|
|
|
+.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
|
|
|
|
|
|
/* Reserved */
|
|
|
vector10_17:
|
|
|
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
|
|
|
|
|
|
-vector18: .long _FAULT /* Spurious Interrupt */
|
|
|
-vector19: .long _FAULT /* Autovector Level 1 */
|
|
|
-vector1A: .long _FAULT /* Autovector Level 2 */
|
|
|
-vector1B: .long _FAULT /* Autovector Level 3 */
|
|
|
-vector1C: .long _FAULT /* Autovector Level 4 */
|
|
|
-vector1D: .long _FAULT /* Autovector Level 5 */
|
|
|
-vector1E: .long _FAULT /* Autovector Level 6 */
|
|
|
-vector1F: .long _FAULT /* Autovector Level 7 */
|
|
|
+vector18_1F:
|
|
|
+.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT
|
|
|
|
|
|
#if !defined(CONFIG_SERIAL_BOOT)
|
|
|
|
|
@@ -136,12 +121,12 @@ vector192_255:
|
|
|
#if defined(CONFIG_SERIAL_BOOT)
|
|
|
/* Image header: chksum 4 bytes, len 4 bytes, img dest 4 bytes */
|
|
|
asm_sbf_img_hdr:
|
|
|
- .long 0x00000000 /* checksum, not yet implemented */
|
|
|
- .long 0x00040000 /* image length */
|
|
|
+ .long 0x00000000 /* checksum, not yet implemented */
|
|
|
+ .long 0x00040000 /* image length */
|
|
|
.long CONFIG_SYS_TEXT_BASE /* image to be relocated at */
|
|
|
|
|
|
asm_dram_init:
|
|
|
- move.w #0x2700,%sr /* Mask off Interrupt */
|
|
|
+ move.w #0x2700,%sr /* Mask off Interrupt */
|
|
|
|
|
|
#ifdef CONFIG_SYS_NAND_BOOT
|
|
|
/* for assembly stack */
|
|
@@ -149,7 +134,7 @@ asm_dram_init:
|
|
|
movec %d0, %RAMBAR1
|
|
|
|
|
|
move.l #(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET), %sp
|
|
|
- clr.l %sp@-
|
|
|
+ clr.l %sp@-
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_CF_SBF
|
|
@@ -160,11 +145,11 @@ asm_dram_init:
|
|
|
movec %d0, %RAMBAR1
|
|
|
|
|
|
/* initialize general use internal ram */
|
|
|
- move.l #0, %d0
|
|
|
- move.l #(ICACHE_STATUS), %a1 /* icache */
|
|
|
- move.l #(DCACHE_STATUS), %a2 /* dcache */
|
|
|
- move.l %d0, (%a1)
|
|
|
- move.l %d0, (%a2)
|
|
|
+ move.l #0, %d0
|
|
|
+ move.l #(ICACHE_STATUS), %a1 /* icache */
|
|
|
+ move.l #(DCACHE_STATUS), %a2 /* dcache */
|
|
|
+ move.l %d0, (%a1)
|
|
|
+ move.l %d0, (%a2)
|
|
|
|
|
|
/* invalidate and disable cache */
|
|
|
move.l #(CONFIG_SYS_ICACHE_INV + CONFIG_SYS_DCACHE_INV), %d0
|
|
@@ -176,7 +161,7 @@ asm_dram_init:
|
|
|
movec %d0, %ACR3
|
|
|
|
|
|
move.l #(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET), %sp
|
|
|
- clr.l %sp@-
|
|
|
+ clr.l %sp@-
|
|
|
|
|
|
/* Must disable global address */
|
|
|
move.l #0xFC008000, %a1
|
|
@@ -185,7 +170,7 @@ asm_dram_init:
|
|
|
move.l #(CONFIG_SYS_CS0_CTRL), (%a1)
|
|
|
move.l #0xFC008004, %a1
|
|
|
move.l #(CONFIG_SYS_CS0_MASK), (%a1)
|
|
|
-#endif /* CONFIG_CF_SBF */
|
|
|
+#endif /* CONFIG_CF_SBF */
|
|
|
|
|
|
#ifdef CONFIG_MCF5441x
|
|
|
/* TC: enable all peripherals,
|
|
@@ -193,9 +178,9 @@ asm_dram_init:
|
|
|
move.l #0xFC04002D, %a1
|
|
|
|
|
|
#if defined(CONFIG_CF_SBF)
|
|
|
- move.b #23, (%a1) /* dspi */
|
|
|
+ move.b #23, (%a1) /* dspi */
|
|
|
#endif
|
|
|
- move.b #46, (%a1) /* DDR */
|
|
|
+ move.b #46, (%a1) /* DDR */
|
|
|
|
|
|
/* slew settings */
|
|
|
move.l #0xEC094060, %a1
|
|
@@ -365,7 +350,7 @@ dramsz_loop:
|
|
|
|
|
|
move.l #2000, %d1
|
|
|
jsr asm_delay
|
|
|
-#endif /* CONFIG_MCF5445x */
|
|
|
+#endif /* CONFIG_MCF5445x */
|
|
|
|
|
|
#ifdef CONFIG_CF_SBF
|
|
|
/*
|
|
@@ -484,7 +469,7 @@ asm_dspi_rd_status:
|
|
|
|
|
|
move.b (%a3), %d1
|
|
|
rts
|
|
|
-#endif /* CONFIG_CF_SBF */
|
|
|
+#endif /* CONFIG_CF_SBF */
|
|
|
|
|
|
#ifdef CONFIG_SYS_NAND_BOOT
|
|
|
/* copy 4 boot pages to dram as soon as possible */
|
|
@@ -509,13 +494,13 @@ asm_nand_init:
|
|
|
move.l %d1, (%a1)
|
|
|
|
|
|
/* initialize general use internal ram */
|
|
|
- move.l #0, %d0
|
|
|
- move.l #(CACR_STATUS), %a1 /* CACR */
|
|
|
- move.l #(ICACHE_STATUS), %a2 /* icache */
|
|
|
- move.l #(DCACHE_STATUS), %a3 /* dcache */
|
|
|
- move.l %d0, (%a1)
|
|
|
- move.l %d0, (%a2)
|
|
|
- move.l %d0, (%a3)
|
|
|
+ move.l #0, %d0
|
|
|
+ move.l #(CACR_STATUS), %a1 /* CACR */
|
|
|
+ move.l #(ICACHE_STATUS), %a2 /* icache */
|
|
|
+ move.l #(DCACHE_STATUS), %a3 /* dcache */
|
|
|
+ move.l %d0, (%a1)
|
|
|
+ move.l %d0, (%a2)
|
|
|
+ move.l %d0, (%a3)
|
|
|
|
|
|
/* invalidate and disable cache */
|
|
|
move.l #0x01004100, %d0 /* Invalidate cache cmd */
|
|
@@ -571,7 +556,7 @@ asm_nand_init:
|
|
|
move.l #4, %d2 /* start at 4 */
|
|
|
move.l #0xFC0FFF04, %a0 /* cmd2 */
|
|
|
move.l #0xFC0FFF0C, %a1 /* rar */
|
|
|
- move.l #(CONFIG_SYS_TEXT_BASE + 0xF80), %a2 /* dst */
|
|
|
+ move.l #(CONFIG_SYS_TEXT_BASE + 0xF80), %a2
|
|
|
|
|
|
asm_nand_read:
|
|
|
move.l #0x11000000, %d0 /* rar */
|
|
@@ -621,14 +606,14 @@ asm_delay:
|
|
|
rts
|
|
|
#endif /* CONFIG_CF_SBF || CONFIG_NAND_U_BOOT */
|
|
|
|
|
|
- .text
|
|
|
+.text
|
|
|
. = 0x400
|
|
|
- .globl _start
|
|
|
+.globl _start
|
|
|
_start:
|
|
|
#if !defined(CONFIG_SERIAL_BOOT)
|
|
|
nop
|
|
|
nop
|
|
|
- move.w #0x2700,%sr /* Mask off Interrupt */
|
|
|
+ move.w #0x2700,%sr /* Mask off Interrupt */
|
|
|
|
|
|
/* Set vector base register at the beginning of the Flash */
|
|
|
move.l #CONFIG_SYS_FLASH_BASE, %d0
|
|
@@ -638,11 +623,11 @@ _start:
|
|
|
movec %d0, %RAMBAR1
|
|
|
|
|
|
/* initialize general use internal ram */
|
|
|
- move.l #0, %d0
|
|
|
- move.l #(ICACHE_STATUS), %a1 /* icache */
|
|
|
- move.l #(DCACHE_STATUS), %a2 /* dcache */
|
|
|
- move.l %d0, (%a1)
|
|
|
- move.l %d0, (%a2)
|
|
|
+ move.l #0, %d0
|
|
|
+ move.l #(ICACHE_STATUS), %a1 /* icache */
|
|
|
+ move.l #(DCACHE_STATUS), %a2 /* dcache */
|
|
|
+ move.l %d0, (%a1)
|
|
|
+ move.l %d0, (%a2)
|
|
|
|
|
|
/* invalidate and disable cache */
|
|
|
move.l #(CONFIG_SYS_ICACHE_INV + CONFIG_SYS_DCACHE_INV), %d0
|
|
@@ -658,10 +643,10 @@ _start:
|
|
|
#endif
|
|
|
|
|
|
/* put relocation table address to a5 */
|
|
|
- move.l #__got_start, %a5
|
|
|
+ move.l #__got_start, %a5
|
|
|
|
|
|
/* setup stack initially on top of internal static ram */
|
|
|
- move.l #(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE), %sp
|
|
|
+ move.l #(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE), %sp
|
|
|
|
|
|
/*
|
|
|
* if configured, malloc_f arena will be reserved first,
|
|
@@ -672,25 +657,26 @@ _start:
|
|
|
jsr (%a1)
|
|
|
|
|
|
/* update stack and frame-pointers */
|
|
|
- move.l %d0, %sp
|
|
|
- move.l %sp, %fp
|
|
|
+ move.l %d0, %sp
|
|
|
+ move.l %sp, %fp
|
|
|
|
|
|
/* initialize reserved area */
|
|
|
- move.l %d0, -(%sp)
|
|
|
+ move.l %d0, -(%sp)
|
|
|
move.l #board_init_f_init_reserve, %a1
|
|
|
jsr (%a1)
|
|
|
|
|
|
/* run low-level CPU init code (from flash) */
|
|
|
- move.l #cpu_init_f, %a1
|
|
|
- jsr (%a1)
|
|
|
+ move.l #cpu_init_f, %a1
|
|
|
+ jsr (%a1)
|
|
|
+
|
|
|
/* run low-level board init code (from flash) */
|
|
|
clr.l %sp@-
|
|
|
- move.l #board_init_f, %a1
|
|
|
- jsr (%a1)
|
|
|
+ move.l #board_init_f, %a1
|
|
|
+ jsr (%a1)
|
|
|
|
|
|
/* board_init_f() does not return */
|
|
|
|
|
|
-/*------------------------------------------------------------------------------*/
|
|
|
+/******************************************************************************/
|
|
|
|
|
|
/*
|
|
|
* void relocate_code (addr_sp, gd, addr_moni)
|
|
@@ -703,23 +689,23 @@ _start:
|
|
|
* r5 = length in bytes
|
|
|
* r6 = cachelinesize
|
|
|
*/
|
|
|
- .globl relocate_code
|
|
|
+.globl relocate_code
|
|
|
relocate_code:
|
|
|
- link.w %a6,#0
|
|
|
- move.l 8(%a6), %sp /* set new stack pointer */
|
|
|
+ link.w %a6,#0
|
|
|
+ move.l 8(%a6), %sp /* set new stack pointer */
|
|
|
|
|
|
- move.l 12(%a6), %d0 /* Save copy of Global Data pointer */
|
|
|
- move.l 16(%a6), %a0 /* Save copy of Destination Address */
|
|
|
+ move.l 12(%a6), %d0 /* Save copy of Global Data pointer */
|
|
|
+ move.l 16(%a6), %a0 /* Save copy of Destination Address */
|
|
|
|
|
|
- move.l #CONFIG_SYS_MONITOR_BASE, %a1
|
|
|
- move.l #__init_end, %a2
|
|
|
- move.l %a0, %a3
|
|
|
+ move.l #CONFIG_SYS_MONITOR_BASE, %a1
|
|
|
+ move.l #__init_end, %a2
|
|
|
+ move.l %a0, %a3
|
|
|
|
|
|
/* copy the code to RAM */
|
|
|
1:
|
|
|
- move.l (%a1)+, (%a3)+
|
|
|
- cmp.l %a1,%a2
|
|
|
- bgt.s 1b
|
|
|
+ move.l (%a1)+, (%a3)+
|
|
|
+ cmp.l %a1,%a2
|
|
|
+ bgt.s 1b
|
|
|
|
|
|
/*
|
|
|
* We are done. Do not return, instead branch to second part of board
|
|
@@ -749,7 +735,7 @@ clear_bss:
|
|
|
*/
|
|
|
move.l %a0, %a1
|
|
|
add.l #(__got_start - CONFIG_SYS_MONITOR_BASE),%a1
|
|
|
- move.l %a1,%a5 /* * fix got pointer register a5 */
|
|
|
+ move.l %a1,%a5 /* fix got pointer register a5 */
|
|
|
|
|
|
move.l %a0, %a2
|
|
|
add.l #(__got_end - CONFIG_SYS_MONITOR_BASE),%a2
|
|
@@ -763,39 +749,40 @@ clear_bss:
|
|
|
bne 7b
|
|
|
|
|
|
/* calculate relative jump to board_init_r in ram */
|
|
|
- move.l %a0, %a1
|
|
|
- add.l #(board_init_r - CONFIG_SYS_MONITOR_BASE), %a1
|
|
|
+ move.l %a0, %a1
|
|
|
+ add.l #(board_init_r - CONFIG_SYS_MONITOR_BASE), %a1
|
|
|
|
|
|
/* set parameters for board_init_r */
|
|
|
- move.l %a0,-(%sp) /* dest_addr */
|
|
|
- move.l %d0,-(%sp) /* gd */
|
|
|
+ move.l %a0,-(%sp) /* dest_addr */
|
|
|
+ move.l %d0,-(%sp) /* gd */
|
|
|
jsr (%a1)
|
|
|
|
|
|
-/*------------------------------------------------------------------------------*/
|
|
|
+/******************************************************************************/
|
|
|
+
|
|
|
/* exception code */
|
|
|
- .globl _fault
|
|
|
+.globl _fault
|
|
|
_fault:
|
|
|
- bra _fault
|
|
|
- .globl _exc_handler
|
|
|
+ bra _fault
|
|
|
|
|
|
+.globl _exc_handler
|
|
|
_exc_handler:
|
|
|
SAVE_ALL
|
|
|
movel %sp,%sp@-
|
|
|
- bsr exc_handler
|
|
|
+ bsr exc_handler
|
|
|
addql #4,%sp
|
|
|
RESTORE_ALL
|
|
|
|
|
|
- .globl _int_handler
|
|
|
+.globl _int_handler
|
|
|
_int_handler:
|
|
|
SAVE_ALL
|
|
|
movel %sp,%sp@-
|
|
|
- bsr int_handler
|
|
|
+ bsr int_handler
|
|
|
addql #4,%sp
|
|
|
RESTORE_ALL
|
|
|
|
|
|
-/*------------------------------------------------------------------------------*/
|
|
|
+/******************************************************************************/
|
|
|
|
|
|
- .globl version_string
|
|
|
+.globl version_string
|
|
|
version_string:
|
|
|
- .ascii U_BOOT_VERSION_STRING, "\0"
|
|
|
- .align 4
|
|
|
+.ascii U_BOOT_VERSION_STRING, "\0"
|
|
|
+.align 4
|