[U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86
Simon Glass
sjg at chromium.org
Wed Apr 6 17:06:02 CEST 2016
Currently it is not possible to build the 64-bit EFI stub due to changes in
the build. To prevent future bit rot, we should add target for building
qemu-x86 as an EFI stub (with U-Boot as a 32-bit payload).
This patch provides some hints.
Reported-by: Nicolae Rosia <nicolae.rosia at gmail.com>
Signed-off-by: Simon Glass <sjg at chromium.org>
---
arch/x86/include/asm/types.h | 12 ++++++++----
configs/qemu-x86_defconfig | 3 +++
include/efi.h | 2 +-
lib/efi/efi_stub.c | 6 +++---
4 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index 766617f..998d70a 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -44,11 +44,15 @@ typedef __INT64_TYPE__ s64;
typedef __UINT64_TYPE__ u64;
#endif
-#ifdef CONFIG_EFI_STUB_64BIT
-#define BITS_PER_LONG 64
-#else
+/*
+ * This should be defined only when compiling the stub - see the
+ * ecmd_u-boot_payload build rule
+ */
+// #ifdef CONFIG_EFI_STUB_64BIT
+// #define BITS_PER_LONG 64
+// #else
#define BITS_PER_LONG 32
-#endif
+// #endif
/* Dma addresses are 32-bits wide. */
typedef u32 dma_addr_t;
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index bb9c6cd..2a7087f 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -32,3 +32,6 @@ CONFIG_VIDEO_VESA=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_111=y
CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_STUB_64BIT=y
diff --git a/include/efi.h b/include/efi.h
index 1dbc3b7..21921f1 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -278,7 +278,7 @@ struct efi_priv {
extern char image_base[];
/* Start and end of U-Boot image (for payload) */
-extern char _binary_u_boot_dtb_bin_start[], _binary_u_boot_dtb_bin_end[];
+extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
/**
* efi_get_sys_table() - Get access to the main EFI system table
diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
index 8b4bb4e..1814960 100644
--- a/lib/efi/efi_stub.c
+++ b/lib/efi/efi_stub.c
@@ -354,9 +354,9 @@ efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table)
/* The EFI UART won't work now, switch to a debug one */
use_uart = true;
- memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_dtb_bin_start,
- (ulong)_binary_u_boot_dtb_bin_end -
- (ulong)_binary_u_boot_dtb_bin_start);
+ memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_bin_start,
+ (ulong)_binary_u_boot_bin_end -
+ (ulong)_binary_u_boot_bin_start);
#ifdef DEBUG
puts("EFI table at ");
--
2.8.0.rc3.226.g39d4020
More information about the U-Boot
mailing list