git: 396b32e801d6 - main - stand: Add back missing EFIAPI define
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 18 Nov 2025 04:45:49 UTC
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=396b32e801d615954750162a616b4e9174b39916
commit 396b32e801d615954750162a616b4e9174b39916
Author: Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-11-18 04:44:07 +0000
Commit: Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-11-18 04:45:59 +0000
stand: Add back missing EFIAPI define
EFIAPI has to be defined correctly for amd64, or things won't boot
because it uses a different API than we normally use. Normally, this
only affects amd64, since all the other archs are basically nothing.
Tested on: amd64, aarch64 and armv7 (the frist two by markj and I with
differnet test setups).
Fixes: 43b8edb32051
Sponsored by: Netflix
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D53799
---
sys/sys/efi-edk2.h | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/sys/sys/efi-edk2.h b/sys/sys/efi-edk2.h
index 513c56549803..b27b26bd613c 100644
--- a/sys/sys/efi-edk2.h
+++ b/sys/sys/efi-edk2.h
@@ -41,7 +41,20 @@ typedef void VOID;
/* We can't actually call this stuff, so snip out API syntactic sugar */
#define INTERFACE_DECL(x) struct x
+#ifdef _STANDALONE
+#if defined(__amd64__)
+#define EFIAPI __attribute__((ms_abi))
+#endif
+#ifndef EFIAPI // Forces EFI calling conventions reguardless of compiler options
+ #ifdef _MSC_EXTENSIONS
+ #define EFIAPI __cdecl // Force C calling convention for Microsoft C compiler
+ #else
+ #define EFIAPI // Substitute expresion to force C calling convention
+ #endif
+#endif
+#else
#define EFIAPI
+#endif
#define IN
#define OUT
#define CONST const
@@ -64,11 +77,13 @@ typedef void VOID;
#define PACKED
/*
- * Since we're not compiling for the UEFI boot time (which use ms abi
- * conventions), tell EDK2 to define VA_START correctly. For the boot
- * loader, this likely needs to be different.
+ * For userland and the kernel, we're not compiling for the UEFI boot time
+ * (which use ms abi conventions on amd64), tell EDK2 to define VA_START
+ * correctly. For the boot loader, we can't do that, so don't.
*/
+#ifndef _STANDALONE
#define NO_MSABI_VA_FUNCS 1
+#endif
/*
* Finally, we need to define the processor we are in EDK2 terms.