Hi, On Wed, Apr 6, 2016 at 6:06 PM, Simon Glass <s...@chromium.org> wrote: > 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.ro...@gmail.com> > Signed-off-by: Simon Glass <s...@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 > + */ Are you saying that I should take a look at cmd_u-boot_payload in Makefile? I've looked over it and I don't figure out what I should see.
> +// #ifdef CONFIG_EFI_STUB_64BIT > +// #define BITS_PER_LONG 64 > +// #else > #define BITS_PER_LONG 32 > -#endif > +// #endif This fixes the compilation warnings > /* 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 Should we create an example defconfig for efi stub and not modify the qemu defconfig? > 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); > Thanks, these fixes the compilation errors. > #ifdef DEBUG > puts("EFI table at "); > -- > 2.8.0.rc3.226.g39d4020 > I'll try to boot test. Best regards, Nicolae _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot