x86: Call early_board_init when warm booting
authorGraeme Russ <graeme.russ@gmail.com>
Sat, 12 Feb 2011 04:11:33 +0000 (15:11 +1100)
committerGraeme Russ <graeme.russ@gmail.com>
Sat, 12 Feb 2011 04:11:33 +0000 (15:11 +1100)
early_board_init has been skipped to avoid SDRAM corruption in the case
that a fully relocatable image has been loaded into SDRAM and is being
executed from SDRAM. x86 is being aligned with other architectures (ARM
and PPC in particlar) and will be using Cache-As-RAM to run a C
environment from Flash (or SRAM if you have some). early_board_init may
be needed to assist in the setup of Cache-As-RAM and the early C
environment

arch/i386/cpu/start.S

index 460c21bef8e7562cb9cfadbf0b22fb02f3e558ab..97bac8f3a640d934d716e5cde2b9a8d6e5eb7b09 100644 (file)
@@ -67,16 +67,16 @@ _start:
        /* Clear the interupt vectors */
        lidt    blank_idt_ptr
 
-       /* Skip low-level initialization if not starting from cold-reset */
-       movl    %ebx, %ecx
-       andl    $GD_FLG_COLD_BOOT, %ecx
-       jz      skip_mem_init
-
        /* Early platform init (setup gpio, etc ) */
        jmp     early_board_init
 .globl early_board_init_ret
 early_board_init_ret:
 
+       /* Skip memory initialization if not starting from cold-reset */
+       movl    %ebx, %ecx
+       andl    $GD_FLG_COLD_BOOT, %ecx
+       jz      skip_mem_init
+
        /* size memory */
        jmp     mem_init
 .globl mem_init_ret