From 0bd93bbe4ae60e5f318b298bfe617e468a7b71d0 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Sat, 1 Apr 2017 15:28:28 +0200 Subject: [PATCH] crypto/ppccap.c: SIGILL-free processor capabilities detection on MacOS X. It seems to be problematic to probe processor capabilities with SIGILL on MacOS X. The problem should be limited to cases when application code is debugged, but crashes were reported even during normal execution... Reviewed-by: Kurt Roeckx Reviewed-by: Richard Levitte Reviewed-by: Rich Salz --- crypto/ppccap.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/crypto/ppccap.c b/crypto/ppccap.c index b2b898e797..2f7cd8e6e7 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -22,6 +22,10 @@ # define __power_set(a) (_system_configuration.implementation & (a)) # endif #endif +#if defined(__APPLE__) && defined(__MACH__) +# include +# include +#endif #include #include @@ -240,6 +244,28 @@ void OPENSSL_cpuid_setup(void) # endif #endif +#if defined(__APPLE__) && defined(__MACH__) + OPENSSL_ppccap_P |= PPC_FPU; + + { + int val; + size_t len = sizeof(val); + + if (sysctlbyname("hw.optional.64bitops", &val, &len, NULL, 0) == 0) { + if (val) + OPENSSL_ppccap_P |= PPC_FPU64; + } + + len = sizeof(val); + if (sysctlbyname("hw.optional.altivec", &val, &len, NULL, 0) == 0) { + if (val) + OPENSSL_ppccap_P |= PPC_ALTIVEC; + } + + return; + } +#endif + if (getauxval != NULL) { unsigned long hwcap = getauxval(HWCAP); -- 2.34.1