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:
parent
bc9092f726
commit
90ba3a28f8
crypto
@ -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>"
|
||||||
___
|
___
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user