Hi Nicolae, On 6 April 2016 at 09:50, Nicolae Rosia <nicolae.ro...@gmail.com> wrote: > 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.
Just the list of files that it builds there (efi.c and efi_stub.c). > >> +// #ifdef CONFIG_EFI_STUB_64BIT >> +// #define BITS_PER_LONG 64 >> +// #else >> #define BITS_PER_LONG 32 >> -#endif >> +// #endif > This fixes the compilation warnings Right, but a correct patch will obey the comment immediately above. > >> /* 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? I suggest a new board config called qemu-x86-efi. It can copy qemu, with the addition of the above three options. > >> 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. OK, but it is still broken without the fix mentioned above. > > Best regards, > Nicolae Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot