projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bc9092f
)
s390x assembler pack: extend OPENSSL_s390xcap_P to 128 bits.
author
Andy Polyakov
<appro@openssl.org>
Sat, 18 Sep 2010 08:46:53 +0000
(08:46 +0000)
committer
Andy Polyakov
<appro@openssl.org>
Sat, 18 Sep 2010 08:46:53 +0000
(08:46 +0000)
crypto/aes/asm/aes-s390x.pl
patch
|
blob
|
history
crypto/s390xcap.c
patch
|
blob
|
history
crypto/s390xcpuid.S
patch
|
blob
|
history
crypto/sha/asm/sha1-s390x.pl
patch
|
blob
|
history
crypto/sha/asm/sha512-s390x.pl
patch
|
blob
|
history
diff --git
a/crypto/aes/asm/aes-s390x.pl
b/crypto/aes/asm/aes-s390x.pl
index 5ffacb8cf4616a5a6baefd59e426f47866d4d34a..4be64e3e512f23ce2d25d4e4c1cae0a68144e8a0 100644
(file)
--- a/
crypto/aes/asm/aes-s390x.pl
+++ b/
crypto/aes/asm/aes-s390x.pl
@@
-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>"
___
diff --git
a/crypto/s390xcap.c
b/crypto/s390xcap.c
index ffbe0235f996214099aba8fdef2c7d1758e8a85c..f2e94ef47e83cd125759df5d38b8de81a612f268 100644
(file)
--- a/
crypto/s390xcap.c
+++ b/
crypto/s390xcap.c
@@
-4,7
+4,7
@@
#include <setjmp.h>
#include <signal.h>
#include <setjmp.h>
#include <signal.h>
-extern unsigned long OPENSSL_s390xcap_P;
+extern unsigned long OPENSSL_s390xcap_P
[]
;
static sigjmp_buf ill_jmp;
static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); }
static sigjmp_buf ill_jmp;
static void ill_handler (int sig) { siglongjmp(ill_jmp,sig); }
@@
-16,7
+16,9
@@
void OPENSSL_cpuid_setup(void)
sigset_t oset;
struct sigaction ill_act,oact;
sigset_t oset;
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));
ill_act.sa_handler = ill_handler;
memset(&ill_act,0,sizeof(ill_act));
ill_act.sa_handler = ill_handler;
@@
-27,10
+29,8
@@
void OPENSSL_cpuid_setup(void)
sigaction (SIGILL,&ill_act,&oact);
/* protection against missing store-facility-list-extended */
sigaction (SIGILL,&ill_act,&oact);
/* protection against missing store-facility-list-extended */
- if (sigsetjmp(ill_jmp,0) == 0)
- OPENSSL_s390xcap_P = OPENSSL_s390x_facilities();
- else
- OPENSSL_s390xcap_P = 1UL<<63;
+ if (sigsetjmp(ill_jmp,1) == 0)
+ OPENSSL_s390x_facilities();
sigaction (SIGILL,&oact,NULL);
sigprocmask(SIG_SETMASK,&oset,NULL);
sigaction (SIGILL,&oact,NULL);
sigprocmask(SIG_SETMASK,&oset,NULL);
diff --git
a/crypto/s390xcpuid.S
b/crypto/s390xcpuid.S
index b053c6a28190ca4d4c83b74b6b4b603efb184d6d..82312d8b4e9e903e127493e977095d6822fd3839 100644
(file)
--- a/
crypto/s390xcpuid.S
+++ b/
crypto/s390xcpuid.S
@@
-5,10
+5,14
@@
.align 16
OPENSSL_s390x_facilities:
lghi %r0,0
.align 16
OPENSSL_s390x_facilities:
lghi %r0,0
- .long 0xb2b0f010 # stfle 16(%r15)
- lg %r2,16(%r15)
- larl %r1,OPENSSL_s390xcap_P
- stg %r2,0(%r1)
+ larl %r2,OPENSSL_s390xcap_P
+ stg %r0,8(%r2)
+ .long 0xb2b02000 # stfle 0(%r2)
+ brc 8,.Ldone
+ lghi %r0,1
+ .long 0xb2b02000 # stfle 0(%r2)
+.Ldone:
+ lg %r2,0(%r2)
br %r14
.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
br %r14
.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
@@
-89,4
+93,4
@@
OPENSSL_cleanse:
.section .init
brasl %r14,OPENSSL_cpuid_setup
.section .init
brasl %r14,OPENSSL_cpuid_setup
-.comm OPENSSL_s390xcap_P,
8
,8
+.comm OPENSSL_s390xcap_P,
16
,8
diff --git
a/crypto/sha/asm/sha1-s390x.pl
b/crypto/sha/asm/sha1-s390x.pl
index 659afffc08da462232ae675129419d6e91ff6ae5..0e38f8e36d4b7187780a3005834a9031505849ee 100644
(file)
--- a/
crypto/sha/asm/sha1-s390x.pl
+++ b/
crypto/sha/asm/sha1-s390x.pl
@@
-217,7
+217,7
@@
$code.=<<___;
br %r14
.size sha1_block_data_order,.-sha1_block_data_order
.string "SHA1 block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
br %r14
.size sha1_block_data_order,.-sha1_block_data_order
.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;
diff --git
a/crypto/sha/asm/sha512-s390x.pl
b/crypto/sha/asm/sha512-s390x.pl
index 9d68215e2bed82c6f7e6c79a8b1a5be483b9d1fc..3a358a486092a6d43a3d9491cdb7313f413f436a 100644
(file)
--- a/
crypto/sha/asm/sha512-s390x.pl
+++ b/
crypto/sha/asm/sha512-s390x.pl
@@
-290,7
+290,7
@@
$code.=<<___;
br %r14
.size $Func,.-$Func
.string "SHA${label} block transform for s390x, CRYPTOGAMS by <appro\@openssl.org>"
br %r14
.size $Func,.-$Func
.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;