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 <kurt@openssl.org> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
parent
d83112b7fd
commit
0bd93bbe4a
1 changed files with 26 additions and 0 deletions
|
@ -22,6 +22,10 @@
|
|||
# define __power_set(a) (_system_configuration.implementation & (a))
|
||||
# endif
|
||||
#endif
|
||||
#if defined(__APPLE__) && defined(__MACH__)
|
||||
# include <sys/types.h>
|
||||
# include <sys/sysctl.h>
|
||||
#endif
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/bn.h>
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue