X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fppccap.c;h=2e2f3fc5c0cfacf784abd9d1572ef05a868fb2ba;hp=f71ba66aa38282fb2ec6884f791ee80083d0c73f;hb=b4f0abd246340b90bb3fa2646814729f0e9d049e;hpb=fd05495748e1875ba4e9b94c477553a3a7edfa92 diff --git a/crypto/ppccap.c b/crypto/ppccap.c index f71ba66aa3..2e2f3fc5c0 100644 --- a/crypto/ppccap.c +++ b/crypto/ppccap.c @@ -4,6 +4,9 @@ #include #include #include +#if defined(__linux) || defined(_AIX) +#include +#endif #include #include @@ -85,12 +88,14 @@ void OPENSSL_cpuid_setup(void) OPENSSL_ppccap_P = 0; #if defined(_AIX) - if (sizeof(size_t)==4 + if (sizeof(size_t)==4) + { + struct utsname uts; # if defined(_SC_AIX_KERNEL_BITMODE) - && sysconf(_SC_AIX_KERNEL_BITMODE)!=64 + if (sysconf(_SC_AIX_KERNEL_BITMODE)!=64) return; # endif - ) - return; + if (uname(&uts)!=0 || atoi(uts.version)<6) return; + } #endif memset(&ill_act,0,sizeof(ill_act)); @@ -102,6 +107,10 @@ void OPENSSL_cpuid_setup(void) if (sizeof(size_t)==4) { +#ifdef __linux + struct utsname uts; + if (uname(&uts)==0 && strcmp(uts.machine,"ppc64")==0) +#endif if (sigsetjmp(ill_jmp,1) == 0) { OPENSSL_ppc64_probe();