summaryrefslogtreecommitdiff
path: root/arch/x86/lib/bootm.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-08-04 18:34:00 (GMT)
committerSimon Glass <sjg@chromium.org>2015-08-05 14:44:08 (GMT)
commite49cceac61a0f56beff466f844fb9b3451d564eb (patch)
treef82a912a899cf687bf46215daa20fabc96acc1ca /arch/x86/lib/bootm.c
parentf1a0bafb5802416d42d685b343110c1557da1739 (diff)
downloadu-boot-e49cceac61a0f56beff466f844fb9b3451d564eb.tar.xz
x86: Handle running as EFI payload
When U-Boot runs as an EFI payload it needs to avoid setting up the CPU again. Also U-Boot currently does not handle interrupts for many devices, so run with interrupts disabled. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'arch/x86/lib/bootm.c')
-rw-r--r--arch/x86/lib/bootm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c
index 445ee6e..f441c84 100644
--- a/arch/x86/lib/bootm.c
+++ b/arch/x86/lib/bootm.c
@@ -164,7 +164,11 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
* the data segments are 0x18, 4GB flat, and read/write.
* U-boot is setting them up that way for itself in
* arch/i386/cpu/cpu.c.
+ *
+ * Note that we cannot currently boot a kernel while running as
+ * an EFI application. Please use the payload option for that.
*/
+#ifndef CONFIG_EFI_APP
__asm__ __volatile__ (
"movl $0, %%ebp\n"
"cli\n"
@@ -173,6 +177,7 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
[boot_params] "S"(setup_base),
"b"(0), "D"(0)
);
+#endif
}
/* We can't get to here */