yasuoka@ pointed out that amd64 clang now understands
authorkrw <krw@openbsd.org>
Fri, 4 Jun 2021 00:09:34 +0000 (00:09 +0000)
committerkrw <krw@openbsd.org>
Fri, 4 Jun 2021 00:09:34 +0000 (00:09 +0000)
'__attribute((ms_abi))', removing the need for the EFI_CALL
abstraction.

Nuke the amd64 EFI_CALL dance from all copies of eficall.h,
remove eficall.S from the build.

ok kettenis@ yasuoka@

sys/arch/amd64/stand/efiboot/bootx64/Makefile
sys/arch/amd64/stand/efiboot/eficall.h
sys/arch/arm64/stand/efiboot/eficall.h
sys/arch/armv7/stand/efiboot/eficall.h
sys/arch/riscv64/stand/efiboot/eficall.h
sys/stand/efi/include/amd64/efibind.h

index c9bb387..4bc51d5 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Makefile,v 1.3 2020/06/14 16:00:11 deraadt Exp $
+#      $OpenBSD: Makefile,v 1.4 2021/06/04 00:09:34 krw Exp $
 
 .include <bsd.own.mk>
 
@@ -7,7 +7,7 @@ NOMAN=          #
 OBJFMT=                efi-app-x86_64
 SOFTRAID=      yes
 COPTS+=                -I${EFIDIR}/include/amd64
-SRCS+=         start_amd64.S run_i386.S mdrandom.c eficall.S
+SRCS+=         start_amd64.S run_i386.S mdrandom.c
 LDSCRIPT=      ldscript.amd64
 
 .include "${.CURDIR}/../Makefile.common"
index 0e62764..bf18089 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: eficall.h,v 1.3 2017/11/25 19:02:07 patrick Exp $     */
+/*     $OpenBSD: eficall.h,v 1.4 2021/06/04 00:09:34 krw Exp $ */
 
 /*
  * Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#if !defined(__amd64__)
-
 #define        EFI_CALL(_func_, ...) (_func_)(__VA_ARGS__)
-
-#else
-
-extern uint64_t efi_call(int, void *, ...);
-
-#define        _call_0(_func) \
-    efi_call(0, (_func))
-#define        _call_1(_func, _1) \
-    efi_call(1, (_func), (_1))
-#define        _call_2(_func, _1, _2) \
-    efi_call(2, (_func), (_1), (_2))
-#define        _call_3(_func, _1, _2, _3) \
-    efi_call(3, (_func), (_1), (_2), (_3))
-#define        _call_4(_func, _1, _2, _3, _4) \
-    efi_call(4, (_func), (_1), (_2), (_3), (_4))
-#define        _call_5(_func, _1, _2, _3, _4, _5) \
-    efi_call(5, (_func), (_1), (_2), (_3), (_4), (_5))
-#define        _call_6(_func, _1, _2, _3, _4, _5, _6) \
-    efi_call(6, (_func), (_1), (_2), (_3), (_4), (_5), (_6))
-#define        _call_7(_func, _1, _2, _3, _4, _5, _6, _7) \
-    efi_call(7, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7))
-#define        _call_8(_func, _1, _2, _3, _4, _5, _6, _7, _8) \
-    efi_call(8, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8))
-#define        _call_9(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9) \
-    efi_call(9, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9))
-#define        _call_10(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \
-    efi_call(10, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9), (_10))
-
-#define _efi_call_fn(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10,  _fn, ...) _fn
-
-#define        EFI_CALL(...)   \
-    _efi_call_fn(__VA_ARGS__, _call_10, _call_9, _call_8,  _call_7, _call_6, \
-           _call_5, _call_4, _call_3, _call_2, _call_1, _call_0)(__VA_ARGS__)
-#endif
index dbf2e71..bf18089 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: eficall.h,v 1.3 2018/01/21 21:35:34 patrick Exp $     */
+/*     $OpenBSD: eficall.h,v 1.4 2021/06/04 00:09:34 krw Exp $ */
 
 /*
  * Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#if !defined(__amd64__)
-
 #define        EFI_CALL(_func_, ...) (_func_)(__VA_ARGS__)
-
-#else
-
-extern uint64_t efi_call(int, void *, ...);
-
-#define        _call_0(_func) \
-    efi_call(0, (_func))
-#define        _call_1(_func, _1) \
-    efi_call(1, (_func), (_1))
-#define        _call_2(_func, _1, _2) \
-    efi_call(2, (_func), (_1), (_2))
-#define        _call_3(_func, _1, _2, _3) \
-    efi_call(3, (_func), (_1), (_2), (_3))
-#define        _call_4(_func, _1, _2, _3, _4) \
-    efi_call(4, (_func), (_1), (_2), (_3), (_4))
-#define        _call_5(_func, _1, _2, _3, _4, _5) \
-    efi_call(5, (_func), (_1), (_2), (_3), (_4), (_5))
-#define        _call_6(_func, _1, _2, _3, _4, _5, _6) \
-    efi_call(6, (_func), (_1), (_2), (_3), (_4), (_5), (_6))
-#define        _call_7(_func, _1, _2, _3, _4, _5, _6, _7) \
-    efi_call(7, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7))
-#define        _call_8(_func, _1, _2, _3, _4, _5, _6, _7, _8) \
-    efi_call(8, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8))
-#define        _call_9(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9) \
-    efi_call(9, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9))
-#define        _call_10(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \
-    efi_call(10, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9), (_10))
-
-#define _efi_call_fn(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10,  _fn, ...) _fn
-
-#define        EFI_CALL(...)   \
-    _efi_call_fn(__VA_ARGS__, _call_10, _call_9, _call_8,  _call_7, _call_6, \
-           _call_5, _call_4, _call_3, _call_2, _call_1, _call_0)(__VA_ARGS__)
-#endif
index a31763c..bf18089 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: eficall.h,v 1.3 2018/03/31 18:19:12 patrick Exp $     */
+/*     $OpenBSD: eficall.h,v 1.4 2021/06/04 00:09:34 krw Exp $ */
 
 /*
  * Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#if !defined(__amd64__)
-
 #define        EFI_CALL(_func_, ...) (_func_)(__VA_ARGS__)
-
-#else
-
-extern uint64_t efi_call(int, void *, ...);
-
-#define        _call_0(_func) \
-    efi_call(0, (_func))
-#define        _call_1(_func, _1) \
-    efi_call(1, (_func), (_1))
-#define        _call_2(_func, _1, _2) \
-    efi_call(2, (_func), (_1), (_2))
-#define        _call_3(_func, _1, _2, _3) \
-    efi_call(3, (_func), (_1), (_2), (_3))
-#define        _call_4(_func, _1, _2, _3, _4) \
-    efi_call(4, (_func), (_1), (_2), (_3), (_4))
-#define        _call_5(_func, _1, _2, _3, _4, _5) \
-    efi_call(5, (_func), (_1), (_2), (_3), (_4), (_5))
-#define        _call_6(_func, _1, _2, _3, _4, _5, _6) \
-    efi_call(6, (_func), (_1), (_2), (_3), (_4), (_5), (_6))
-#define        _call_7(_func, _1, _2, _3, _4, _5, _6, _7) \
-    efi_call(7, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7))
-#define        _call_8(_func, _1, _2, _3, _4, _5, _6, _7, _8) \
-    efi_call(8, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8))
-#define        _call_9(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9) \
-    efi_call(9, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9))
-#define        _call_10(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \
-    efi_call(10, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9), (_10))
-
-#define _efi_call_fn(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10,  _fn, ...) _fn
-
-#define        EFI_CALL(...)   \
-    _efi_call_fn(__VA_ARGS__, _call_10, _call_9, _call_8,  _call_7, _call_6, \
-           _call_5, _call_4, _call_3, _call_2, _call_1, _call_0)(__VA_ARGS__)
-#endif
index 7c33b66..7322605 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: eficall.h,v 1.1 2021/04/28 19:01:00 drahn Exp $       */
+/*     $OpenBSD: eficall.h,v 1.2 2021/06/04 00:09:34 krw Exp $ */
 
 /*
  * Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#if !defined(__amd64__)
-
 #define        EFI_CALL(_func_, ...) (_func_)(__VA_ARGS__)
-
-#else
-
-extern uint64_t efi_call(int, void *, ...);
-
-#define        _call_0(_func) \
-    efi_call(0, (_func))
-#define        _call_1(_func, _1) \
-    efi_call(1, (_func), (_1))
-#define        _call_2(_func, _1, _2) \
-    efi_call(2, (_func), (_1), (_2))
-#define        _call_3(_func, _1, _2, _3) \
-    efi_call(3, (_func), (_1), (_2), (_3))
-#define        _call_4(_func, _1, _2, _3, _4) \
-    efi_call(4, (_func), (_1), (_2), (_3), (_4))
-#define        _call_5(_func, _1, _2, _3, _4, _5) \
-    efi_call(5, (_func), (_1), (_2), (_3), (_4), (_5))
-#define        _call_6(_func, _1, _2, _3, _4, _5, _6) \
-    efi_call(6, (_func), (_1), (_2), (_3), (_4), (_5), (_6))
-#define        _call_7(_func, _1, _2, _3, _4, _5, _6, _7) \
-    efi_call(7, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7))
-#define        _call_8(_func, _1, _2, _3, _4, _5, _6, _7, _8) \
-    efi_call(8, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8))
-#define        _call_9(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9) \
-    efi_call(9, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9))
-#define        _call_10(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \
-    efi_call(10, (_func), (_1), (_2), (_3), (_4), (_5), (_6), (_7), (_8), (_9), (_10))
-
-#define _efi_call_fn(_func, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10,  _fn, ...) _fn
-
-#define        EFI_CALL(...)   \
-    _efi_call_fn(__VA_ARGS__, _call_10, _call_9, _call_8,  _call_7, _call_6, \
-           _call_5, _call_4, _call_3, _call_2, _call_1, _call_0)(__VA_ARGS__)
-#endif
index 1d0dcd9..622cc63 100644 (file)
@@ -160,7 +160,7 @@ typedef uint64_t   UINTN;
 //
 
 #ifdef __amd64__
-#define        EFIAPI                  /* Use EFI_CALL() macro in eficall.h */
+#define        EFIAPI  __attribute((ms_abi))
 #endif
 
 #ifndef EFIAPI                  // Forces EFI calling conventions reguardless of compiler options