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>
master
Richard Henderson 2023-06-06 00:40:31 +03:00
parent 2be6a48673
commit dc8a8cc879
1 changed files with 16 additions and 7 deletions

View File

@ -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"