diff options
author | pkubaj <pkubaj@FreeBSD.org> | 2021-11-20 20:40:06 +0000 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2021-12-09 16:07:14 +1100 |
commit | f5485b97b6c9977c0d39c7669b9f97a879312447 (patch) | |
tree | 90e0d70744ee292114bfbfd0693c5cc9cd0c855a /crypto/ppccap.c | |
parent | f4f77c2d9756cee12875397276799a93f057d412 (diff) |
Add support for BSD-ppc, BSD-ppc64 and BSD-ppc64le configurations
OpenSSL assumes AT_HWCAP = 16 (as on Linux), but on FreeBSD AT_HWCAP = 25
Switch to using AT_HWCAP, and setting it to 16 if it is not defined.
CLA: trivial
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17090)
Diffstat (limited to 'crypto/ppccap.c')
-rw-r--r-- | crypto/ppccap.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/crypto/ppccap.c b/crypto/ppccap.c index dca3c5342b..da371a5345 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -117,14 +117,18 @@ static unsigned long getauxval(unsigned long key) #endif /* I wish <sys/auxv.h> was universally available */ -#define HWCAP 16 /* AT_HWCAP */ +#ifndef AT_HWCAP +# define AT_HWCAP 16 /* AT_HWCAP */ +#endif #define HWCAP_PPC64 (1U << 30) #define HWCAP_ALTIVEC (1U << 28) #define HWCAP_FPU (1U << 27) #define HWCAP_POWER6_EXT (1U << 9) #define HWCAP_VSX (1U << 7) -#define HWCAP2 26 /* AT_HWCAP2 */ +#ifndef AT_HWCAP2 +# define AT_HWCAP2 26 /* AT_HWCAP2 */ +#endif #define HWCAP_VEC_CRYPTO (1U << 25) #define HWCAP_ARCH_3_00 (1U << 23) @@ -215,8 +219,8 @@ void OPENSSL_cpuid_setup(void) #ifdef OSSL_IMPLEMENT_GETAUXVAL { - unsigned long hwcap = getauxval(HWCAP); - unsigned long hwcap2 = getauxval(HWCAP2); + unsigned long hwcap = getauxval(AT_HWCAP); + unsigned long hwcap2 = getauxval(AT_HWCAP2); if (hwcap & HWCAP_FPU) { OPENSSL_ppccap_P |= PPC_FPU; |