#include <stdio.h> #include <stdlib.h> #include <string.h> #include <setjmp.h> #include <signal.h> extern unsigned long OPENSSL_s390xcap_P[]; static sigjmp_buf ill_jmp; static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); } unsigned long OPENSSL_s390x_facilities(void); void OPENSSL_cpuid_setup(void) { sigset_t oset; struct sigaction ill_act,oact; 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; sigfillset(&ill_act.sa_mask); sigdelset(&ill_act.sa_mask,SIGILL); sigdelset(&ill_act.sa_mask,SIGTRAP); sigprocmask(SIG_SETMASK,&ill_act.sa_mask,&oset); sigaction (SIGILL,&ill_act,&oact); /* protection against missing store-facility-list-extended */ if (sigsetjmp(ill_jmp,1) == 0) OPENSSL_s390x_facilities(); sigaction (SIGILL,&oact,NULL); sigprocmask(SIG_SETMASK,&oset,NULL); }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 10713 | Robert Cowham |
Populate //guest/robert_cowham/openssl/1.0.1j/... from //guest/robert_cowham/openssl/main/.... |
||
//guest/robert_cowham/openssl/main/crypto/s390xcap.c | |||||
#1 | 10711 | Robert Cowham | OpenSSL 1.0.1i |