[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