]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
x86: Add back cold- and warm-boot flags
authorGabe Black <gabeblack@chromium.org>
Sat, 3 Nov 2012 11:41:28 +0000 (11:41 +0000)
committerSimon Glass <sjg@chromium.org>
Thu, 6 Dec 2012 22:30:42 +0000 (14:30 -0800)
These were removed, but actually are useful.

Cold means that we started from a reset/power on.
Warm means that we started from another U-Boot.

We determine whether u-boot on x86 was warm or cold booted (really if
it started at the beginning of the text segment or at the ELF entry point).
We plumb the result through to the global data structure.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/start.S
arch/x86/cpu/start16.S
arch/x86/include/asm/global_data.h

index ec12e8044fd92a6f4c8fcf24057bb19f3645324f..e960e21f6e49d88979b3b502e163f646920dc41d 100644 (file)
@@ -55,8 +55,16 @@ _x86boot_start:
        movl    %eax, %cr0
        wbinvd
 
+       /* Tell 32-bit code it is being entered from an in-RAM copy */
+       movw    $GD_FLG_WARM_BOOT, %bx
+       jmp     1f
 _start:
-       /* This is the 32-bit cold-reset entry point */
+       /*
+        * This is the 32-bit cold-reset entry point. Initialize %bx to 0
+        * in case we're preceeded by some sort of boot stub.
+        */
+       movw    $GD_FLG_COLD_BOOT, %bx
+1:
 
        /* Load the segement registes to match the gdt loaded in start16.S */
        movl    $(X86_GDT_ENTRY_32BIT_DS * X86_GDT_ENTRY_SIZE), %eax
index cc393ff54fccce6efe6cdf84df983bf03cb561ce..603bf1d2d3ecf8a05ae79c54e2bd4dd267800432 100644 (file)
@@ -37,6 +37,9 @@
 .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
index 35110a33322d8b7573d7b8ed9c5ce40057c322fa..dc6402b67dba5425a19d526749ca0d73db35806b 100644 (file)
@@ -78,6 +78,12 @@ static inline gd_t *get_fs_gd_ptr(void)
 
 #include <asm-generic/global_data_flags.h>
 
+/*
+ * Our private Global Data Flags
+ */
+#define GD_FLG_COLD_BOOT       0x00100 /* Cold Boot */
+#define GD_FLG_WARM_BOOT       0x00200 /* Warm Boot */
+
 #define DECLARE_GLOBAL_DATA_PTR
 
 #endif /* __ASM_GBL_DATA_H */