|
@@ -74,7 +74,7 @@
|
|
* r4 - 2nd arg to board_init(): boot flag
|
|
* r4 - 2nd arg to board_init(): boot flag
|
|
*/
|
|
*/
|
|
.text
|
|
.text
|
|
- .long 0x27051956 /* U-Boot Magic Number */
|
|
|
|
|
|
+ .long 0x27051956 /* U-Boot Magic Number */
|
|
.globl version_string
|
|
.globl version_string
|
|
version_string:
|
|
version_string:
|
|
.ascii U_BOOT_VERSION
|
|
.ascii U_BOOT_VERSION
|
|
@@ -92,7 +92,7 @@ _start:
|
|
|
|
|
|
.globl _start_warm
|
|
.globl _start_warm
|
|
_start_warm:
|
|
_start_warm:
|
|
- li r21, BOOTFLAG_WARM /* Software reboot */
|
|
|
|
|
|
+ li r21, BOOTFLAG_WARM /* Software reboot */
|
|
b boot_warm
|
|
b boot_warm
|
|
sync
|
|
sync
|
|
|
|
|
|
@@ -183,7 +183,7 @@ boot_cold:
|
|
boot_warm:
|
|
boot_warm:
|
|
|
|
|
|
/* if this is a multi-core system we need to check which cpu
|
|
/* if this is a multi-core system we need to check which cpu
|
|
- * this is, if it is not cpu 0 send the cpu to the linux reset
|
|
|
|
|
|
+ * this is, if it is not cpu 0 send the cpu to the linux reset
|
|
* vector */
|
|
* vector */
|
|
#if (CONFIG_NUM_CPUS > 1)
|
|
#if (CONFIG_NUM_CPUS > 1)
|
|
mfspr r0, MSSCR0
|
|
mfspr r0, MSSCR0
|
|
@@ -194,7 +194,7 @@ boot_warm:
|
|
|
|
|
|
bl secondary_cpu_setup
|
|
bl secondary_cpu_setup
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
/* disable everything */
|
|
/* disable everything */
|
|
1: li r0, 0
|
|
1: li r0, 0
|
|
mtspr HID0, r0
|
|
mtspr HID0, r0
|
|
@@ -202,17 +202,17 @@ boot_warm:
|
|
mtmsr 0
|
|
mtmsr 0
|
|
bl invalidate_bats
|
|
bl invalidate_bats
|
|
sync
|
|
sync
|
|
-
|
|
|
|
|
|
+
|
|
#ifdef CFG_L2
|
|
#ifdef CFG_L2
|
|
/* init the L2 cache */
|
|
/* init the L2 cache */
|
|
addis r3, r0, L2_INIT@h
|
|
addis r3, r0, L2_INIT@h
|
|
ori r3, r3, L2_INIT@l
|
|
ori r3, r3, L2_INIT@l
|
|
- mtspr l2cr, r3
|
|
|
|
|
|
+ mtspr l2cr, r3
|
|
/* invalidate the L2 cache */
|
|
/* invalidate the L2 cache */
|
|
bl l2cache_invalidate
|
|
bl l2cache_invalidate
|
|
sync
|
|
sync
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Calculate absolute address in FLASH and jump there
|
|
* Calculate absolute address in FLASH and jump there
|
|
*------------------------------------------------------*/
|
|
*------------------------------------------------------*/
|
|
@@ -231,7 +231,7 @@ in_flash:
|
|
|
|
|
|
/* enable extended addressing */
|
|
/* enable extended addressing */
|
|
bl enable_ext_addr
|
|
bl enable_ext_addr
|
|
-
|
|
|
|
|
|
+
|
|
/* setup the bats */
|
|
/* setup the bats */
|
|
bl setup_bats
|
|
bl setup_bats
|
|
sync
|
|
sync
|
|
@@ -240,7 +240,7 @@ in_flash:
|
|
/* setup ccsrbar */
|
|
/* setup ccsrbar */
|
|
bl setup_ccsrbar
|
|
bl setup_ccsrbar
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
/* Fix for SMP linux - Changing arbitration to round-robin */
|
|
/* Fix for SMP linux - Changing arbitration to round-robin */
|
|
lis r3, CFG_CCSRBAR@h
|
|
lis r3, CFG_CCSRBAR@h
|
|
ori r3, r3, 0x1000
|
|
ori r3, r3, 0x1000
|
|
@@ -279,7 +279,7 @@ in_flash:
|
|
stw r4, 0(r3)
|
|
stw r4, 0(r3)
|
|
sync
|
|
sync
|
|
#endif
|
|
#endif
|
|
-#if 1
|
|
|
|
|
|
+#if 1
|
|
/* make sure timer enabled in guts register too */
|
|
/* make sure timer enabled in guts register too */
|
|
lis r3, CFG_CCSRBAR@h
|
|
lis r3, CFG_CCSRBAR@h
|
|
oris r3,r3, 0xE
|
|
oris r3,r3, 0xE
|
|
@@ -289,7 +289,7 @@ in_flash:
|
|
ori r5,r5,0x5FFF
|
|
ori r5,r5,0x5FFF
|
|
and r4,r4,r5
|
|
and r4,r4,r5
|
|
stw r4,0(r3)
|
|
stw r4,0(r3)
|
|
-#endif
|
|
|
|
|
|
+#endif
|
|
/*
|
|
/*
|
|
* Cache must be enabled here for stack-in-cache trick.
|
|
* Cache must be enabled here for stack-in-cache trick.
|
|
* This means we need to enable the BATS.
|
|
* This means we need to enable the BATS.
|
|
@@ -303,13 +303,13 @@ in_flash:
|
|
|
|
|
|
/* enable and invalidate the data cache */
|
|
/* enable and invalidate the data cache */
|
|
/* bl l1dcache_enable */
|
|
/* bl l1dcache_enable */
|
|
- bl dcache_enable
|
|
|
|
|
|
+ bl dcache_enable
|
|
sync
|
|
sync
|
|
|
|
|
|
#if 1
|
|
#if 1
|
|
bl icache_enable
|
|
bl icache_enable
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
#ifdef CFG_INIT_RAM_LOCK
|
|
#ifdef CFG_INIT_RAM_LOCK
|
|
bl lock_ram_in_cache
|
|
bl lock_ram_in_cache
|
|
sync
|
|
sync
|
|
@@ -330,7 +330,7 @@ in_flash:
|
|
bl cpu_init_f
|
|
bl cpu_init_f
|
|
sync
|
|
sync
|
|
|
|
|
|
-#ifdef RUN_DIAG
|
|
|
|
|
|
+#ifdef RUN_DIAG
|
|
|
|
|
|
/* Sri: Code to run the diagnostic automatically */
|
|
/* Sri: Code to run the diagnostic automatically */
|
|
|
|
|
|
@@ -361,9 +361,9 @@ in_flash:
|
|
|
|
|
|
/* Branch to diagnostic */
|
|
/* Branch to diagnostic */
|
|
blr
|
|
blr
|
|
-
|
|
|
|
-diag_done:
|
|
|
|
-#endif
|
|
|
|
|
|
+
|
|
|
|
+diag_done:
|
|
|
|
+#endif
|
|
|
|
|
|
/* bl l2cache_enable*/
|
|
/* bl l2cache_enable*/
|
|
mr r3, r21
|
|
mr r3, r21
|
|
@@ -377,7 +377,7 @@ diag_done:
|
|
|
|
|
|
.globl invalidate_bats
|
|
.globl invalidate_bats
|
|
invalidate_bats:
|
|
invalidate_bats:
|
|
-
|
|
|
|
|
|
+
|
|
/* invalidate BATs */
|
|
/* invalidate BATs */
|
|
mtspr IBAT0U, r0
|
|
mtspr IBAT0U, r0
|
|
mtspr IBAT1U, r0
|
|
mtspr IBAT1U, r0
|
|
@@ -401,12 +401,12 @@ invalidate_bats:
|
|
isync
|
|
isync
|
|
sync
|
|
sync
|
|
blr
|
|
blr
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
/* setup_bats - set them up to some initial state */
|
|
/* setup_bats - set them up to some initial state */
|
|
.globl setup_bats
|
|
.globl setup_bats
|
|
setup_bats:
|
|
setup_bats:
|
|
-
|
|
|
|
|
|
+
|
|
addis r0, r0, 0x0000
|
|
addis r0, r0, 0x0000
|
|
|
|
|
|
/* IBAT 0 */
|
|
/* IBAT 0 */
|
|
@@ -553,7 +553,7 @@ setup_bats:
|
|
mtspr DBAT7U, r3
|
|
mtspr DBAT7U, r3
|
|
isync
|
|
isync
|
|
|
|
|
|
-1:
|
|
|
|
|
|
+1:
|
|
addis r3, 0, 0x0000
|
|
addis r3, 0, 0x0000
|
|
addis r5, 0, 0x4 /* upper bound of 0x00040000 for 7400/750 */
|
|
addis r5, 0, 0x4 /* upper bound of 0x00040000 for 7400/750 */
|
|
isync
|
|
isync
|
|
@@ -662,142 +662,140 @@ get_svr:
|
|
blr
|
|
blr
|
|
|
|
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: in8 */
|
|
|
|
-/* Description: Input 8 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: in8
|
|
|
|
+ * Description: Input 8 bits
|
|
|
|
+ */
|
|
.globl in8
|
|
.globl in8
|
|
in8:
|
|
in8:
|
|
lbz r3,0x0000(r3)
|
|
lbz r3,0x0000(r3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: out8 */
|
|
|
|
-/* Description: Output 8 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: out8
|
|
|
|
+ * Description: Output 8 bits
|
|
|
|
+ */
|
|
.globl out8
|
|
.globl out8
|
|
out8:
|
|
out8:
|
|
stb r4,0x0000(r3)
|
|
stb r4,0x0000(r3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: out16 */
|
|
|
|
-/* Description: Output 16 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: out16
|
|
|
|
+ * Description: Output 16 bits
|
|
|
|
+ */
|
|
.globl out16
|
|
.globl out16
|
|
out16:
|
|
out16:
|
|
sth r4,0x0000(r3)
|
|
sth r4,0x0000(r3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: out16r */
|
|
|
|
-/* Description: Byte reverse and output 16 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: out16r
|
|
|
|
+ * Description: Byte reverse and output 16 bits
|
|
|
|
+ */
|
|
.globl out16r
|
|
.globl out16r
|
|
out16r:
|
|
out16r:
|
|
sthbrx r4,r0,r3
|
|
sthbrx r4,r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: out32 */
|
|
|
|
-/* Description: Output 32 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: out32
|
|
|
|
+ * Description: Output 32 bits
|
|
|
|
+ */
|
|
.globl out32
|
|
.globl out32
|
|
out32:
|
|
out32:
|
|
stw r4,0x0000(r3)
|
|
stw r4,0x0000(r3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: out32r */
|
|
|
|
-/* Description: Byte reverse and output 32 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: out32r
|
|
|
|
+ * Description: Byte reverse and output 32 bits
|
|
|
|
+ */
|
|
.globl out32r
|
|
.globl out32r
|
|
out32r:
|
|
out32r:
|
|
stwbrx r4,r0,r3
|
|
stwbrx r4,r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: in16 */
|
|
|
|
-/* Description: Input 16 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: in16
|
|
|
|
+ * Description: Input 16 bits
|
|
|
|
+ */
|
|
.globl in16
|
|
.globl in16
|
|
in16:
|
|
in16:
|
|
lhz r3,0x0000(r3)
|
|
lhz r3,0x0000(r3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: in16r */
|
|
|
|
-/* Description: Input 16 bits and byte reverse */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: in16r
|
|
|
|
+ * Description: Input 16 bits and byte reverse
|
|
|
|
+ */
|
|
.globl in16r
|
|
.globl in16r
|
|
in16r:
|
|
in16r:
|
|
lhbrx r3,r0,r3
|
|
lhbrx r3,r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: in32 */
|
|
|
|
-/* Description: Input 32 bits */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: in32
|
|
|
|
+ * Description: Input 32 bits
|
|
|
|
+ */
|
|
.globl in32
|
|
.globl in32
|
|
in32:
|
|
in32:
|
|
lwz 3,0x0000(3)
|
|
lwz 3,0x0000(3)
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: in32r */
|
|
|
|
-/* Description: Input 32 bits and byte reverse */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: in32r
|
|
|
|
+ * Description: Input 32 bits and byte reverse
|
|
|
|
+ */
|
|
.globl in32r
|
|
.globl in32r
|
|
in32r:
|
|
in32r:
|
|
lwbrx r3,r0,r3
|
|
lwbrx r3,r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: ppcDcbf */
|
|
|
|
-/* Description: Data Cache block flush */
|
|
|
|
-/* Input: r3 = effective address */
|
|
|
|
-/* Output: none. */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: ppcDcbf
|
|
|
|
+ * Description: Data Cache block flush
|
|
|
|
+ * Input: r3 = effective address
|
|
|
|
+ * Output: none.
|
|
|
|
+ */
|
|
.globl ppcDcbf
|
|
.globl ppcDcbf
|
|
ppcDcbf:
|
|
ppcDcbf:
|
|
dcbf r0,r3
|
|
dcbf r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
-/* Function: ppcDcbi */
|
|
|
|
-/* Description: Data Cache block Invalidate */
|
|
|
|
-/* Input: r3 = effective address */
|
|
|
|
-/* Output: none. */
|
|
|
|
-/*------------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: ppcDcbi
|
|
|
|
+ * Description: Data Cache block Invalidate
|
|
|
|
+ * Input: r3 = effective address
|
|
|
|
+ * Output: none.
|
|
|
|
+ */
|
|
.globl ppcDcbi
|
|
.globl ppcDcbi
|
|
ppcDcbi:
|
|
ppcDcbi:
|
|
dcbi r0,r3
|
|
dcbi r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*--------------------------------------------------------------------------
|
|
|
|
|
|
+/*
|
|
* Function: ppcDcbz
|
|
* Function: ppcDcbz
|
|
* Description: Data Cache block zero.
|
|
* Description: Data Cache block zero.
|
|
* Input: r3 = effective address
|
|
* Input: r3 = effective address
|
|
* Output: none.
|
|
* Output: none.
|
|
- *-------------------------------------------------------------------------- */
|
|
|
|
-
|
|
|
|
|
|
+ */
|
|
.globl ppcDcbz
|
|
.globl ppcDcbz
|
|
ppcDcbz:
|
|
ppcDcbz:
|
|
dcbz r0,r3
|
|
dcbz r0,r3
|
|
blr
|
|
blr
|
|
|
|
|
|
-/*-------------------------------------------------------------------------- */
|
|
|
|
-/* Function: ppcSync */
|
|
|
|
-/* Description: Processor Synchronize */
|
|
|
|
-/* Input: none. */
|
|
|
|
-/* Output: none. */
|
|
|
|
-/*-------------------------------------------------------------------------- */
|
|
|
|
|
|
+/*
|
|
|
|
+ * Function: ppcSync
|
|
|
|
+ * Description: Processor Synchronize
|
|
|
|
+ * Input: none.
|
|
|
|
+ * Output: none.
|
|
|
|
+ */
|
|
.globl ppcSync
|
|
.globl ppcSync
|
|
ppcSync:
|
|
ppcSync:
|
|
sync
|
|
sync
|
|
blr
|
|
blr
|
|
-
|
|
|
|
-/*-----------------------------------------------------------------------*/
|
|
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* void relocate_code (addr_sp, gd, addr_moni)
|
|
* void relocate_code (addr_sp, gd, addr_moni)
|
|
*
|
|
*
|
|
@@ -1062,7 +1060,7 @@ enable_ext_addr:
|
|
|
|
|
|
#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
|
|
#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
|
|
.globl setup_ccsrbar
|
|
.globl setup_ccsrbar
|
|
-setup_ccsrbar:
|
|
|
|
|
|
+setup_ccsrbar:
|
|
/* Special sequence needed to update CCSRBAR itself */
|
|
/* Special sequence needed to update CCSRBAR itself */
|
|
lis r4, CFG_CCSRBAR_DEFAULT@h
|
|
lis r4, CFG_CCSRBAR_DEFAULT@h
|
|
ori r4, r4, CFG_CCSRBAR_DEFAULT@l
|
|
ori r4, r4, CFG_CCSRBAR_DEFAULT@l
|
|
@@ -1081,10 +1079,10 @@ setup_ccsrbar:
|
|
lis r3, CFG_CCSRBAR@h
|
|
lis r3, CFG_CCSRBAR@h
|
|
lwz r5, CFG_CCSRBAR@l(r3)
|
|
lwz r5, CFG_CCSRBAR@l(r3)
|
|
isync
|
|
isync
|
|
-
|
|
|
|
|
|
+
|
|
blr
|
|
blr
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
#ifdef CFG_INIT_RAM_LOCK
|
|
#ifdef CFG_INIT_RAM_LOCK
|
|
lock_ram_in_cache:
|
|
lock_ram_in_cache:
|
|
/* Allocate Initial RAM in data cache.
|
|
/* Allocate Initial RAM in data cache.
|
|
@@ -1120,7 +1118,7 @@ lock_ram_in_cache:
|
|
isync
|
|
isync
|
|
blr
|
|
blr
|
|
#endif
|
|
#endif
|
|
-
|
|
|
|
|
|
+
|
|
.globl unlock_ram_in_cache
|
|
.globl unlock_ram_in_cache
|
|
unlock_ram_in_cache:
|
|
unlock_ram_in_cache:
|
|
/* invalidate the INIT_RAM section */
|
|
/* invalidate the INIT_RAM section */
|
|
@@ -1146,7 +1144,7 @@ unlock_ram_in_cache:
|
|
sync
|
|
sync
|
|
blr
|
|
blr
|
|
#endif
|
|
#endif
|
|
-#if 0
|
|
|
|
|
|
+#if 0
|
|
/* Unlock the first way of the data cache */
|
|
/* Unlock the first way of the data cache */
|
|
mfspr r0, LDSTCR
|
|
mfspr r0, LDSTCR
|
|
li r3,0x0080
|
|
li r3,0x0080
|
|
@@ -1173,16 +1171,16 @@ unlock_ram_in_cache:
|
|
* from Linux. We'll do some basic cpu init and then pass
|
|
* from Linux. We'll do some basic cpu init and then pass
|
|
* it to the Linux Reset Vector.
|
|
* it to the Linux Reset Vector.
|
|
* Sri: Much of this initialization is not required. Linux
|
|
* Sri: Much of this initialization is not required. Linux
|
|
- * rewrites the bats, and the sprs and also enables the L1 cache.
|
|
|
|
|
|
+ * rewrites the bats, and the sprs and also enables the L1 cache.
|
|
*/
|
|
*/
|
|
#if (CONFIG_NUM_CPUS > 1)
|
|
#if (CONFIG_NUM_CPUS > 1)
|
|
.globl secondary_cpu_setup
|
|
.globl secondary_cpu_setup
|
|
-secondary_cpu_setup:
|
|
|
|
|
|
+secondary_cpu_setup:
|
|
/* Do only core setup on all cores except cpu0 */
|
|
/* Do only core setup on all cores except cpu0 */
|
|
bl invalidate_bats
|
|
bl invalidate_bats
|
|
sync
|
|
sync
|
|
bl enable_ext_addr
|
|
bl enable_ext_addr
|
|
-
|
|
|
|
|
|
+
|
|
#ifdef CFG_L2
|
|
#ifdef CFG_L2
|
|
/* init the L2 cache */
|
|
/* init the L2 cache */
|
|
addis r3, r0, L2_INIT@h
|
|
addis r3, r0, L2_INIT@h
|
|
@@ -1204,27 +1202,26 @@ secondary_cpu_setup:
|
|
/* enable and invalidate the instruction cache*/
|
|
/* enable and invalidate the instruction cache*/
|
|
bl icache_enable
|
|
bl icache_enable
|
|
sync
|
|
sync
|
|
-
|
|
|
|
|
|
|
|
/* TBEN in HID0 */
|
|
/* TBEN in HID0 */
|
|
mfspr r4, HID0
|
|
mfspr r4, HID0
|
|
- oris r4, r4, 0x0400
|
|
|
|
|
|
+ oris r4, r4, 0x0400
|
|
mtspr HID0, r4
|
|
mtspr HID0, r4
|
|
sync
|
|
sync
|
|
isync
|
|
isync
|
|
-
|
|
|
|
|
|
+
|
|
/*SYNCBE|ABE in HID1*/
|
|
/*SYNCBE|ABE in HID1*/
|
|
mfspr r4, HID1
|
|
mfspr r4, HID1
|
|
- ori r4, r4, 0x0C00
|
|
|
|
|
|
+ ori r4, r4, 0x0C00
|
|
mtspr HID1, r4
|
|
mtspr HID1, r4
|
|
sync
|
|
sync
|
|
isync
|
|
isync
|
|
-
|
|
|
|
|
|
+
|
|
lis r3, CONFIG_LINUX_RESET_VEC@h
|
|
lis r3, CONFIG_LINUX_RESET_VEC@h
|
|
ori r3, r3, CONFIG_LINUX_RESET_VEC@l
|
|
ori r3, r3, CONFIG_LINUX_RESET_VEC@l
|
|
mtlr r3
|
|
mtlr r3
|
|
blr
|
|
blr
|
|
-
|
|
|
|
- /* Never Returns, Running in Linux Now */
|
|
|
|
|
|
+
|
|
|
|
+ /* Never Returns, Running in Linux Now */
|
|
#endif
|
|
#endif
|
|
|
|
|