wbinvd
 
        /* Tell 32-bit code it is being entered from an in-RAM copy */
-       movw    $0x0000, %bx
+       movw    $GD_FLG_WARM_BOOT, %bx
 _start:
        /* This is the 32-bit cold-reset entry point */
 
        /* Clear the interupt vectors */
        lidt    blank_idt_ptr
 
-       /*
-        * Skip low-level board and memory initialization if not starting
-        * from cold-reset. This allows us to do a fail safe boot-strap
-        * into a new build of U-Boot from a known-good boot flash
-        */
-       movw    $0x0001, %ax
-       cmpw    %ax, %bx
-       jne     mem_init_ret
-
-       /* We call a few functions in the board support package
-        * since we have no stack yet we'll have to use %ebp
-        * to store the return address */
+       /* 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 mem_init_ret
 mem_init_ret:
 
+skip_mem_init:
        /* fetch memory size (into %eax) */
        jmp     get_mem_size
 .globl get_mem_size_ret
 
  * MA 02111-1307 USA
  */
 
+#include <asm/global_data.h>
 
 #define BOOT_SEG       0xffff0000      /* linear segment of boot code */
 #define a32            .byte 0x67;
 .code16
 .globl start16
 start16:
+       /* Set the Cold Boot / Hard Reset flag */
+       movl    $GD_FLG_COLD_BOOT, %ebx
+
        /*
         * First we let the BSP do some early initialization
         * this code have to map the flash to its final position
        /* Flush the prefetch queue */
        jmp     ff
 ff:
-       /* Tell 32-bit code it is being entered from hard-reset */
-       movw    $0x0001, %bx
-
        /* Finally jump to the 32bit initialization code */
        movw    $code32start, %ax
        movw    %ax, %bp
 
 #define        GD_FLG_LOGINIT          0x00020 /* Log Buffer has been initialized      */
 #define GD_FLG_DISABLE_CONSOLE 0x00040 /* Disable console (in & out)           */
 #define GD_FLG_ENV_READY       0x00080 /* Environment imported into hash table */
+#define GD_FLG_COLD_BOOT       0x00100 /* Cold Boot */
+#define GD_FLG_WARM_BOOT       0x00200 /* Warm Boot */
+
 
 #define DECLARE_GLOBAL_DATA_PTR