diff options
author | 2012-10-13 21:23:32 +0000 | |
---|---|---|
committer | 2012-10-13 21:23:32 +0000 | |
commit | ec07fdf13572372e9cd617b18f2e2790e6616c8c (patch) | |
tree | bc2aaa935cf216bb82963cd07e6b9f736c4cb1e7 /lib/libcrypto/s390xcap.c | |
parent | sync (diff) | |
download | wireguard-openbsd-ec07fdf13572372e9cd617b18f2e2790e6616c8c.tar.xz wireguard-openbsd-ec07fdf13572372e9cd617b18f2e2790e6616c8c.zip |
import OpenSSL-1.0.1c
Diffstat (limited to 'lib/libcrypto/s390xcap.c')
-rw-r--r-- | lib/libcrypto/s390xcap.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/libcrypto/s390xcap.c b/lib/libcrypto/s390xcap.c index ffbe0235f99..f2e94ef47e8 100644 --- a/lib/libcrypto/s390xcap.c +++ b/lib/libcrypto/s390xcap.c @@ -4,7 +4,7 @@ #include <setjmp.h> #include <signal.h> -extern unsigned long OPENSSL_s390xcap_P; +extern unsigned long OPENSSL_s390xcap_P[]; static sigjmp_buf ill_jmp; static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); } @@ -16,7 +16,9 @@ void OPENSSL_cpuid_setup(void) sigset_t oset; struct sigaction ill_act,oact; - if (OPENSSL_s390xcap_P) return; + if (OPENSSL_s390xcap_P[0]) return; + + OPENSSL_s390xcap_P[0] = 1UL<<(8*sizeof(unsigned long)-1); memset(&ill_act,0,sizeof(ill_act)); ill_act.sa_handler = ill_handler; @@ -27,10 +29,8 @@ void OPENSSL_cpuid_setup(void) sigaction (SIGILL,&ill_act,&oact); /* protection against missing store-facility-list-extended */ - if (sigsetjmp(ill_jmp,0) == 0) - OPENSSL_s390xcap_P = OPENSSL_s390x_facilities(); - else - OPENSSL_s390xcap_P = 1UL<<63; + if (sigsetjmp(ill_jmp,1) == 0) + OPENSSL_s390x_facilities(); sigaction (SIGILL,&oact,NULL); sigprocmask(SIG_SETMASK,&oset,NULL); |