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
[0]) return;
21 OPENSSL_s390xcap_P
[0] = 1UL<<(8*sizeof(unsigned long)-1);
23 memset(&ill_act
,0,sizeof(ill_act
));
24 ill_act
.sa_handler
= ill_handler
;
25 sigfillset(&ill_act
.sa_mask
);
26 sigdelset(&ill_act
.sa_mask
,SIGILL
);
27 sigdelset(&ill_act
.sa_mask
,SIGTRAP
);
28 sigprocmask(SIG_SETMASK
,&ill_act
.sa_mask
,&oset
);
29 sigaction (SIGILL
,&ill_act
,&oact
);
31 /* protection against missing store-facility-list-extended */
32 if (sigsetjmp(ill_jmp
,1) == 0)
33 OPENSSL_s390x_facilities();
35 sigaction (SIGILL
,&oact
,NULL
);
36 sigprocmask(SIG_SETMASK
,&oset
,NULL
);