[U-Boot] [PATCH 05/18] efi: Fix efi_uintn_t for 64-bit EFI payload

Bin Meng bmeng.cn at gmail.com
Sun Jun 10 13:25:04 UTC 2018


Since commit bb0bb91cf0aa ("efi_stub: Use efi_uintn_t"), EFI x86
64-bit payload does not work anymore. The call to GetMemoryMap()
in efi_stub.c fails with return code EFI_INVALID_PARAMETER. Since
the payload itself is still 32-bit U-Boot, efi_uintn_t gets wrongly
interpreted as int, but it should actually be long in a 64-bit EFI
environment.

Fixes: bb0bb91cf0aa ("efi_stub: Use efi_uintn_t")
Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
---

 include/efi_api.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/efi_api.h b/include/efi_api.h
index 64c27e4..d1158de 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -28,7 +28,11 @@ enum efi_timer_delay {
 	EFI_TIMER_RELATIVE = 2
 };
 
+#if defined(CONFIG_EFI_STUB_64BIT) && defined(EFI_STUB)
+#define efi_uintn_t unsigned long
+#else
 #define efi_uintn_t size_t
+#endif
 typedef uint16_t *efi_string_t;
 
 #define EVT_TIMER				0x80000000
-- 
2.7.4



More information about the U-Boot mailing list