aboutsummaryrefslogtreecommitdiff
path: root/tcg
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-06-06 00:40:31 +0300
committerRichard Henderson <richard.henderson@linaro.org>2023-06-20 10:01:30 +0200
commitdc8a8cc879416620fba7ddff4cb9e766d6873f1b (patch)
tree3658fd46409008a4db9ea21d4fce1d56dd10167a /tcg
parent2be6a48673afb3a15ad7a611d5562256707fdc46 (diff)
tcg/ppc: Define _CALL_AIX for clang on ppc64(be)
Restructure the ifdef ladder, separating 64-bit from 32-bit, and ensure _CALL_AIX is set for ELF v1. Fixes the build for ppc64 big-endian host with clang. Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tcg')
-rw-r--r--tcg/ppc/tcg-target.c.inc23
1 files changed, 16 insertions, 7 deletions
diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc
index 507fe6cda8..5c8378f8f6 100644
--- a/tcg/ppc/tcg-target.c.inc
+++ b/tcg/ppc/tcg-target.c.inc
@@ -29,15 +29,24 @@
/*
* Standardize on the _CALL_FOO symbols used by GCC:
* Apple XCode does not define _CALL_DARWIN.
- * Clang defines _CALL_ELF (64-bit) but not _CALL_SYSV (32-bit).
+ * Clang defines _CALL_ELF (64-bit) but not _CALL_SYSV or _CALL_AIX.
*/
-#if !defined(_CALL_SYSV) && \
- !defined(_CALL_DARWIN) && \
- !defined(_CALL_AIX) && \
- !defined(_CALL_ELF)
-# if defined(__APPLE__)
+#if TCG_TARGET_REG_BITS == 64
+# ifdef _CALL_AIX
+ /* ok */
+# elif defined(_CALL_ELF) && _CALL_ELF == 1
+# define _CALL_AIX
+# elif defined(_CALL_ELF) && _CALL_ELF == 2
+ /* ok */
+# else
+# error "Unknown ABI"
+# endif
+#else
+# if defined(_CALL_SYSV) || defined(_CALL_DARWIN)
+ /* ok */
+# elif defined(__APPLE__)
# define _CALL_DARWIN
-# elif defined(__ELF__) && TCG_TARGET_REG_BITS == 32
+# elif defined(__ELF__)
# define _CALL_SYSV
# else
# error "Unknown ABI"