Date: Tue, 18 Nov 2025 04:45:49 GMT From: Warner Losh <imp@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 396b32e801d6 - main - stand: Add back missing EFIAPI define Message-ID: <202511180445.5AI4jnYK085911@gitrepo.freebsd.org>
index | next in thread | raw e-mail
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.help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202511180445.5AI4jnYK085911>
