diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc5xx/start.S')
-rw-r--r-- | arch/powerpc/cpu/mpc5xx/start.S | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/arch/powerpc/cpu/mpc5xx/start.S b/arch/powerpc/cpu/mpc5xx/start.S index 0af879e391..da42557224 100644 --- a/arch/powerpc/cpu/mpc5xx/start.S +++ b/arch/powerpc/cpu/mpc5xx/start.S @@ -43,6 +43,7 @@ #include <linux/config.h> #include <asm/processor.h> +#include <asm/u-boot.h> #ifndef CONFIG_IDENT_STRING #define CONFIG_IDENT_STRING "" @@ -91,18 +92,6 @@ _start: li r4, CONFIG_SYS_ISB /* Set ISB bit */ or r3, r3, r4 mtspr 638, r3 - li r21, BOOTFLAG_COLD /* Normal Power-On: Boot from FLASH */ - b boot_cold - - . = EXC_OFF_SYS_RESET + 0x20 - - .globl _start_warm -_start_warm: - li r21, BOOTFLAG_WARM /* Software reboot */ - b boot_warm - -boot_cold: -boot_warm: /* Initialize machine status; enable machine check interrupt */ /*----------------------------------------------------------------------*/ @@ -188,10 +177,10 @@ in_flash: /* r3: IMMR */ bl cpu_init_f /* run low-level CPU init code (from Flash) */ - mr r3, r21 - /* r3: BOOTFLAG */ bl board_init_f /* run 1st part of board init code (from Flash) */ + /* NOTREACHED - board_init_f() does not return */ + .globl _start_of_vectors _start_of_vectors: @@ -464,10 +453,12 @@ in_ram: beq 4f 3: lwzu r4,4(r3) lwzux r0,r4,r11 + cmpwi r0,0 add r0,r0,r11 stw r10,0(r3) + beq- 5f stw r0,0(r4) - bdnz 3b +5: bdnz 3b 4: clear_bss: /* |