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:			43b8edb320
Sponsored by:		Netflix
Reviewed by:		markj
Differential Revision:	https://reviews.freebsd.org/D53799
This commit is contained in:
Warner Losh
2025-11-17 21:44:07 -07:00
parent f6e9474ebd
commit 396b32e801
+18 -3
View File
@@ -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.