2
0
mirror of https://github.com/openssl/openssl.git synced 2025-02-23 14:42:15 +08:00

s390x assembler pack: extend OPENSSL_s390xcap_P to 128 bits.

This commit is contained in:
Andy Polyakov 2010-09-18 08:46:53 +00:00
parent bc9092f726
commit 90ba3a28f8
5 changed files with 18 additions and 14 deletions

View File

@ -1485,7 +1485,7 @@ $code.=<<___;
___ ___
} }
$code.=<<___; $code.=<<___;
.comm OPENSSL_s390xcap_P,8,8 .comm OPENSSL_s390xcap_P,16,8
.string "AES for s390x, CRYPTOGAMS by <appro\@openssl.org>" .string "AES for s390x, CRYPTOGAMS by <appro\@openssl.org>"
___ ___

View File

@ -4,7 +4,7 @@
#include <setjmp.h> #include <setjmp.h>
#include <signal.h> #include <signal.h>
extern unsigned long OPENSSL_s390xcap_P; extern unsigned long OPENSSL_s390xcap_P[];
static sigjmp_buf ill_jmp; static sigjmp_buf ill_jmp;
static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); } static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); }
@ -16,7 +16,9 @@ void OPENSSL_cpuid_setup(void)
sigset_t oset; sigset_t oset;
struct sigaction ill_act,oact; 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)); memset(&ill_act,0,sizeof(ill_act));
ill_act.sa_handler = ill_handler; ill_act.sa_handler = ill_handler;
@ -27,10 +29,8 @@ void OPENSSL_cpuid_setup(void)
sigaction (SIGILL,&ill_act,&oact); sigaction (SIGILL,&ill_act,&oact);
/* protection against missing store-facility-list-extended */ /* protection against missing store-facility-list-extended */
if (sigsetjmp(ill_jmp,0) == 0) if (sigsetjmp(ill_jmp,1) == 0)
OPENSSL_s390xcap_P = OPENSSL_s390x_facilities(); OPENSSL_s390x_facilities();
else
OPENSSL_s390xcap_P = 1UL<<63;
sigaction (SIGILL,&oact,NULL); sigaction (SIGILL,&oact,NULL);
sigprocmask(SIG_SETMASK,&oset,NULL); sigprocmask(SIG_SETMASK,&oset,NULL);

View File

@ -5,10 +5,14 @@
.align 16 .align 16
OPENSSL_s390x_facilities: OPENSSL_s390x_facilities:
lghi %r0,0 lghi %r0,0
.long 0xb2b0f010 # stfle 16(%r15) larl %r2,OPENSSL_s390xcap_P
lg %r2,16(%r15) stg %r0,8(%r2)
larl %r1,OPENSSL_s390xcap_P .long 0xb2b02000 # stfle 0(%r2)
stg %r2,0(%r1) brc 8,.Ldone
lghi %r0,1
.long 0xb2b02000 # stfle 0(%r2)
.Ldone:
lg %r2,0(%r2)
br %r14 br %r14
.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities .size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
@ -89,4 +93,4 @@ OPENSSL_cleanse:
.section .init .section .init
brasl %r14,OPENSSL_cpuid_setup brasl %r14,OPENSSL_cpuid_setup
.comm OPENSSL_s390xcap_P,8,8 .comm OPENSSL_s390xcap_P,16,8

View File

@ -217,7 +217,7 @@ $code.=<<___;
br %r14 br %r14
.size sha1_block_data_order,.-sha1_block_data_order .size sha1_block_data_order,.-sha1_block_data_order
.string "SHA1 block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>" .string "SHA1 block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
.comm OPENSSL_s390xcap_P,8,8 .comm OPENSSL_s390xcap_P,16,8
___ ___
$code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/\`([^\`]*)\`/eval $1/gem;

View File

@ -290,7 +290,7 @@ $code.=<<___;
br %r14 br %r14
.size $Func,.-$Func .size $Func,.-$Func
.string "SHA${label} block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>" .string "SHA${label} block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
.comm OPENSSL_s390xcap_P,8,8 .comm OPENSSL_s390xcap_P,16,8
___ ___
$code =~ s/\`([^\`]*)\`/eval $1/gem; $code =~ s/\`([^\`]*)\`/eval $1/gem;