aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/cpu/start.S
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2012-11-03 11:41:28 +0000
committerSimon Glass <sjg@chromium.org>2012-12-06 14:30:42 -0800
commit91d82a29e7aec12c97dcd4a4be1962f6d794b35c (patch)
treee70b0d46290d7e1554bc59253cb55e8d091e1ecb /arch/x86/cpu/start.S
parent112a575e498fe0c6bfbb4dbe3266d83f48d46a99 (diff)
downloadu-boot-91d82a29e7aec12c97dcd4a4be1962f6d794b35c.zip
u-boot-91d82a29e7aec12c97dcd4a4be1962f6d794b35c.tar.gz
u-boot-91d82a29e7aec12c97dcd4a4be1962f6d794b35c.tar.bz2
x86: Add back cold- and warm-boot flags
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>
Diffstat (limited to 'arch/x86/cpu/start.S')
-rw-r--r--arch/x86/cpu/start.S10
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
index ec12e80..e960e21 100644
--- a/arch/x86/cpu/start.S
+++ b/arch/x86/cpu/start.S
@@ -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