7 extern unsigned long OPENSSL_s390xcap_P
;
9 static sigjmp_buf ill_jmp
;
10 static void ill_handler (int sig
) { siglongjmp(ill_jmp
,sig
); }
12 unsigned long OPENSSL_s390x_facilities(void);
14 void OPENSSL_cpuid_setup(void)
17 struct sigaction ill_act
,oact
;
19 if (OPENSSL_s390xcap_P
) return;
21 memset(&ill_act
,0,sizeof(ill_act
));
22 ill_act
.sa_handler
= ill_handler
;
23 sigfillset(&ill_act
.sa_mask
);
24 sigdelset(&ill_act
.sa_mask
,SIGILL
);
25 sigdelset(&ill_act
.sa_mask
,SIGTRAP
);
26 sigprocmask(SIG_SETMASK
,&ill_act
.sa_mask
,&oset
);
27 sigaction (SIGILL
,&ill_act
,&oact
);
29 /* protection against missing store-facility-list-extended */
30 if (sigsetjmp(ill_jmp
,0) == 0)
31 OPENSSL_s390xcap_P
= OPENSSL_s390x_facilities();
33 OPENSSL_s390xcap_P
= 1UL<<63;
35 sigaction (SIGILL
,&oact
,NULL
);
36 sigprocmask(SIG_SETMASK
,&oset
,NULL
);