summaryrefslogtreecommitdiff
path: root/deps/openssl/config/archs/linux64-s390x/asm/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'deps/openssl/config/archs/linux64-s390x/asm/crypto')
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/aes/aes-s390x.S84
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/bn/s390x-gf2m.s2
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h63
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/include/internal/dso_conf.h5
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/modes/ghash-s390x.S9
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/s390xcpuid.S323
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S464
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha1-s390x.S4
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha256-s390x.S6
-rw-r--r--deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha512-s390x.S6
10 files changed, 915 insertions, 51 deletions
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/aes/aes-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/aes/aes-s390x.S
index a44e72d047..e00f81ecd4 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/aes/aes-s390x.S
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/aes/aes-s390x.S
@@ -1,3 +1,5 @@
+#include "s390x_arch.h"
+
.text
.type AES_Te,@object
@@ -458,7 +460,7 @@ _s390x_AES_encrypt:
or %r9,%r1
or %r2,%r6
or %r3,%r7
-
+
srlg %r5,%r10,5 # i0
srlg %r6,%r10,13 # i1
nr %r5,%r0
@@ -511,7 +513,7 @@ _s390x_AES_encrypt:
x %r10,24(%r4)
x %r11,28(%r4)
- br %r14
+ br %r14
.size _s390x_AES_encrypt,.-_s390x_AES_encrypt
.type AES_Td,@object
.align 256
@@ -1015,7 +1017,7 @@ _s390x_AES_decrypt:
x %r10,24(%r4)
x %r11,28(%r4)
- br %r14
+ br %r14
.size _s390x_AES_decrypt,.-_s390x_AES_decrypt
# void AES_set_encrypt_key(const unsigned char *in, int bits,
# AES_KEY *key) {
@@ -1054,8 +1056,8 @@ _s390x_AES_set_encrypt_key:
larl %r1,OPENSSL_s390xcap_P
llihh %r0,0x8000
srlg %r0,%r0,0(%r5)
- ng %r0,32(%r1) # check availability of both km...
- ng %r0,48(%r1) # ...and kmc support for given key length
+ ng %r0,S390X_KM(%r1) # check availability of both km...
+ ng %r0,S390X_KMC(%r1) # ...and kmc support for given key length
jz .Lekey_internal
lmg %r0,%r1,0(%r2) # just copy 128 bits...
@@ -1311,7 +1313,7 @@ AES_set_decrypt_key:
lhi %r1,16
cr %r0,%r1
jl .Lgo
- oill %r0,0x80 # set "decrypt" bit
+ oill %r0,S390X_DECRYPT # set "decrypt" bit
st %r0,240(%r4)
br %r14
.align 16
@@ -1427,7 +1429,7 @@ AES_cbc_encrypt:
.align 16
.Lkmc_truncated:
ahi %r5,-1 # it's the way it's encoded in mvc
- tmll %r0,0x80
+ tmll %r0,S390X_DECRYPT
jnz .Lkmc_truncated_dec
lghi %r1,0
stg %r1,16*8(%r15)
@@ -1496,7 +1498,7 @@ AES_cbc_encrypt:
.Lcbc_enc_done:
lg %r6,6*8(%r15)
st %r8,0(%r6)
- st %r9,4(%r6)
+ st %r9,4(%r6)
st %r10,8(%r6)
st %r11,12(%r6)
@@ -1588,7 +1590,61 @@ AES_ctr32_encrypt:
clr %r0,%r1
jl .Lctr32_software
- stmg %r6,%r11,6*8(%r15)
+ stg %r10,10*8(%r15)
+ stg %r11,11*8(%r15)
+
+ clr %r3,%r1 # does work even in 64-bit mode
+ jle .Lctr32_nokma # kma is slower for <= 16 blocks
+
+ larl %r1,OPENSSL_s390xcap_P
+ lr %r10,%r0
+ llihh %r11,0x8000
+ srlg %r11,%r11,0(%r10)
+ ng %r11,S390X_KMA(%r1) # check kma capability vector
+ jz .Lctr32_nokma
+
+ lghi %r1,-160-112
+ lgr %r11,%r15
+ la %r15,0(%r1,%r15) # prepare parameter block
+
+ lhi %r1,0x0600
+ sllg %r3,%r3,4
+ or %r0,%r1 # set HS and LAAD flags
+
+ stg %r11,0(%r15) # backchain
+ la %r1,160(%r15)
+
+ lmg %r10,%r11,0(%r5) # copy key
+ stg %r10,160+80(%r15)
+ stg %r11,160+88(%r15)
+ lmg %r10,%r11,16(%r5)
+ stg %r10,160+96(%r15)
+ stg %r11,160+104(%r15)
+
+ lmg %r10,%r11,0(%r6) # copy iv
+ stg %r10,160+64(%r15)
+ ahi %r11,-1 # kma requires counter-1
+ stg %r11,160+72(%r15)
+ st %r11,160+12(%r15) # copy counter
+
+ lghi %r10,0 # no AAD
+ lghi %r11,0
+
+ .long 0xb929a042 # kma %r4,%r10,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ stg %r0,160+80(%r15) # wipe key
+ stg %r0,160+88(%r15)
+ stg %r0,160+96(%r15)
+ stg %r0,160+104(%r15)
+ la %r15,160+112(%r15)
+
+ lmg %r10,%r11,10*8(%r15)
+ br %r14
+
+.align 16
+.Lctr32_nokma:
+ stmg %r6,%r9,6*8(%r15)
slgr %r4,%r2
la %r1,0(%r5) # %r1 is permanent copy of %r5
@@ -1709,7 +1765,7 @@ _s390x_xts_km:
larl %r1,OPENSSL_s390xcap_P
llihh %r0,0x8000
srlg %r0,%r0,32(%r9) # check for 32+function code
- ng %r0,32(%r1) # check km capability vector
+ ng %r0,S390X_KM(%r1) # check km capability vector
lgr %r0,%r8 # restore the function code
la %r1,0(%r5) # restore %r5
jz .Lxts_km_vanilla
@@ -1744,7 +1800,7 @@ _s390x_xts_km:
llgc %r3,2*8-1(%r15)
nill %r3,0x0f # %r3%=16
br %r14
-
+
.align 16
.Lxts_km_vanilla:
# prepare and allocate stack frame at the top of 4K page
@@ -1960,7 +2016,7 @@ AES_xts_encrypt:
xgr %r9,%r1
lrvgr %r9,%r9 # flip byte order
lrvgr %r11,%r11
- srlg %r8,%r9,32 # smash the tweak to 4x32-bits
+ srlg %r8,%r9,32 # smash the tweak to 4x32-bits
stg %r9,144+0(%r15) # save the tweak
llgfr %r9,%r9
srlg %r10,%r11,32
@@ -2011,7 +2067,7 @@ AES_xts_encrypt:
xgr %r9,%r1
lrvgr %r9,%r9 # flip byte order
lrvgr %r11,%r11
- srlg %r8,%r9,32 # smash the tweak to 4x32-bits
+ srlg %r8,%r9,32 # smash the tweak to 4x32-bits
stg %r9,144+0(%r15) # save the tweak
llgfr %r9,%r9
srlg %r10,%r11,32
@@ -2188,7 +2244,7 @@ AES_xts_decrypt:
xgr %r9,%r1
lrvgr %r9,%r9 # flip byte order
lrvgr %r11,%r11
- srlg %r8,%r9,32 # smash the tweak to 4x32-bits
+ srlg %r8,%r9,32 # smash the tweak to 4x32-bits
stg %r9,144+0(%r15) # save the tweak
llgfr %r9,%r9
srlg %r10,%r11,32
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/bn/s390x-gf2m.s b/deps/openssl/config/archs/linux64-s390x/asm/crypto/bn/s390x-gf2m.s
index 1b90426659..e0b0822cae 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/bn/s390x-gf2m.s
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/bn/s390x-gf2m.s
@@ -206,7 +206,7 @@ bn_GF2m_mul_2x2:
xgr %r4,%r7
xgr %r3,%r6
xgr %r4,%r8
- xgr %r3,%r9
+ xgr %r3,%r9
xgr %r4,%r9
xgr %r3,%r4
stg %r4,16(%r2)
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
index 2f2e17886a..8af744e54c 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
@@ -1,33 +1,42 @@
-/* auto-generated by util/mkbuildinf.pl for crypto/cversion.c */
-#define CFLAGS cflags
/*
- * Generate CFLAGS as an array of individual characters. This is a
+ * WARNING: do not edit!
+ * Generated by util/mkbuildinf.pl
+ *
+ * Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the OpenSSL license (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#define PLATFORM "platform: linux64-s390x"
+#define DATE "built on: Thu Nov 22 19:35:20 2018 UTC"
+
+/*
+ * Generate compiler_flags as an array of individual characters. This is a
* workaround for the situation where CFLAGS gets too long for a C90 string
* literal
*/
-static const char cflags[] = {
- 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','D',
- 'D','S','O','_','D','L','F','C','N',' ','-','D','H','A','V','E',
- '_','D','L','F','C','N','_','H',' ','-','D','N','D','E','B','U',
- 'G',' ','-','D','O','P','E','N','S','S','L','_','T','H','R','E',
- 'A','D','S',' ','-','D','O','P','E','N','S','S','L','_','N','O',
- '_','D','Y','N','A','M','I','C','_','E','N','G','I','N','E',' ',
+static const char compiler_flags[] = {
+ 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f',
+ 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','m','6',
+ '4',' ','-','W','a',',','-','-','n','o','e','x','e','c','s','t',
+ 'a','c','k',' ','-','W','a','l','l',' ','-','O','3',' ','-','D',
+ 'O','P','E','N','S','S','L','_','U','S','E','_','N','O','D','E',
+ 'L','E','T','E',' ','-','D','B','_','E','N','D','I','A','N',' ',
'-','D','O','P','E','N','S','S','L','_','P','I','C',' ','-','D',
- 'O','P','E','N','S','S','L','_','B','N','_','A','S','M','_','M',
- 'O','N','T',' ','-','D','O','P','E','N','S','S','L','_','B','N',
- '_','A','S','M','_','G','F','2','m',' ','-','D','S','H','A','1',
- '_','A','S','M',' ','-','D','S','H','A','2','5','6','_','A','S',
- 'M',' ','-','D','S','H','A','5','1','2','_','A','S','M',' ','-',
- 'D','R','C','4','_','A','S','M',' ','-','D','A','E','S','_','A',
- 'S','M',' ','-','D','A','E','S','_','C','T','R','_','A','S','M',
- ' ','-','D','A','E','S','_','X','T','S','_','A','S','M',' ','-',
- 'D','G','H','A','S','H','_','A','S','M',' ','-','D','P','O','L',
- 'Y','1','3','0','5','_','A','S','M',' ','-','D','O','P','E','N',
- 'S','S','L','D','I','R','=','"','\\','"','/','u','s','r','/','l',
- 'o','c','a','l','/','s','s','l','\\','"','"',' ','-','D','E','N',
- 'G','I','N','E','S','D','I','R','=','"','\\','"','/','u','s','r',
- '/','l','o','c','a','l','/','l','i','b','/','e','n','g','i','n',
- 'e','s','-','1','.','1','\\','"','"',' ','\0'
+ 'O','P','E','N','S','S','L','_','C','P','U','I','D','_','O','B',
+ 'J',' ','-','D','O','P','E','N','S','S','L','_','B','N','_','A',
+ 'S','M','_','M','O','N','T',' ','-','D','O','P','E','N','S','S',
+ 'L','_','B','N','_','A','S','M','_','G','F','2','m',' ','-','D',
+ 'S','H','A','1','_','A','S','M',' ','-','D','S','H','A','2','5',
+ '6','_','A','S','M',' ','-','D','S','H','A','5','1','2','_','A',
+ 'S','M',' ','-','D','K','E','C','C','A','K','1','6','0','0','_',
+ 'A','S','M',' ','-','D','R','C','4','_','A','S','M',' ','-','D',
+ 'A','E','S','_','A','S','M',' ','-','D','A','E','S','_','C','T',
+ 'R','_','A','S','M',' ','-','D','A','E','S','_','X','T','S','_',
+ 'A','S','M',' ','-','D','G','H','A','S','H','_','A','S','M',' ',
+ '-','D','P','O','L','Y','1','3','0','5','_','A','S','M',' ','-',
+ 'D','N','D','E','B','U','G','\0'
};
-#define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Tue Nov 20 09:38:47 2018"
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/include/internal/dso_conf.h
index 7a52dd1f1a..18f6ac3bff 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/include/internal/dso_conf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/include/internal/dso_conf.h
@@ -1,7 +1,7 @@
/* WARNING: do not edit! */
/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */
/*
- * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
@@ -12,5 +12,8 @@
#ifndef HEADER_DSO_CONF_H
# define HEADER_DSO_CONF_H
+# define DSO_DLFCN
+# define HAVE_DLFCN_H
# define DSO_EXTENSION ".so"
+
#endif
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/modes/ghash-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/modes/ghash-s390x.S
index 6dfaa76c35..f6bd2d0857 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/modes/ghash-s390x.S
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/modes/ghash-s390x.S
@@ -1,3 +1,5 @@
+#include "s390x_arch.h"
+
.text
.globl gcm_gmult_4bit
@@ -19,10 +21,11 @@ gcm_gmult_4bit:
.align 32
gcm_ghash_4bit:
larl %r1,OPENSSL_s390xcap_P
- lg %r0,24(%r1) # load second word of kimd capabilities vector
+ lg %r0,S390X_KIMD+8(%r1) # load second word of kimd capabilities
+ # vector
tmhh %r0,0x4000 # check for function 65
jz .Lsoft_ghash
- lghi %r0,65 # function 65
+ lghi %r0,S390X_GHASH # function 65
la %r1,0(%r2) # H lies right after Xi in gcm128_context
.long 0xb93e0004 # kimd %r0,%r4
brc 1,.-4 # pay attention to "partial completion"
@@ -40,7 +43,7 @@ gcm_ghash_4bit:
lg %r0,0+1(%r2)
lghi %r12,0
.Louter:
- xg %r0,0(%r4) # Xi ^= inp
+ xg %r0,0(%r4) # Xi ^= inp
xg %r1,8(%r4)
xgr %r0,%r12
stg %r1,8+1(%r2)
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/s390xcpuid.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/s390xcpuid.S
new file mode 100644
index 0000000000..7c0a5a0720
--- /dev/null
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/s390xcpuid.S
@@ -0,0 +1,323 @@
+#include "s390x_arch.h"
+
+.text
+
+.globl OPENSSL_s390x_facilities
+.type OPENSSL_s390x_facilities,@function
+.align 16
+OPENSSL_s390x_facilities:
+ lghi %r0,0
+ larl %r4,OPENSSL_s390xcap_P
+
+ stg %r0,S390X_STFLE+8(%r4) # wipe capability vectors
+ stg %r0,S390X_STFLE+16(%r4)
+ stg %r0,S390X_STFLE+24(%r4)
+ stg %r0,S390X_KIMD(%r4)
+ stg %r0,S390X_KIMD+8(%r4)
+ stg %r0,S390X_KLMD(%r4)
+ stg %r0,S390X_KLMD+8(%r4)
+ stg %r0,S390X_KM(%r4)
+ stg %r0,S390X_KM+8(%r4)
+ stg %r0,S390X_KMC(%r4)
+ stg %r0,S390X_KMC+8(%r4)
+ stg %r0,S390X_KMAC(%r4)
+ stg %r0,S390X_KMAC+8(%r4)
+ stg %r0,S390X_KMCTR(%r4)
+ stg %r0,S390X_KMCTR+8(%r4)
+ stg %r0,S390X_KMO(%r4)
+ stg %r0,S390X_KMO+8(%r4)
+ stg %r0,S390X_KMF(%r4)
+ stg %r0,S390X_KMF+8(%r4)
+ stg %r0,S390X_PRNO(%r4)
+ stg %r0,S390X_PRNO+8(%r4)
+ stg %r0,S390X_KMA(%r4)
+ stg %r0,S390X_KMA+8(%r4)
+
+ .long 0xb2b04000 # stfle 0(%r4)
+ brc 8,.Ldone
+ lghi %r0,1
+ .long 0xb2b04000 # stfle 0(%r4)
+ brc 8,.Ldone
+ lghi %r0,2
+ .long 0xb2b04000 # stfle 0(%r4)
+.Ldone:
+ lmg %r2,%r3,S390X_STFLE(%r4)
+ tmhl %r2,0x4000 # check for message-security-assist
+ jz .Lret
+
+ lghi %r0,S390X_QUERY # query kimd capabilities
+ la %r1,S390X_KIMD(%r4)
+ .long 0xb93e0002 # kimd %r0,%r2
+
+ lghi %r0,S390X_QUERY # query klmd capabilities
+ la %r1,S390X_KLMD(%r4)
+ .long 0xb93f0002 # klmd %r0,%r2
+
+ lghi %r0,S390X_QUERY # query km capability vector
+ la %r1,S390X_KM(%r4)
+ .long 0xb92e0042 # km %r4,%r2
+
+ lghi %r0,S390X_QUERY # query kmc capability vector
+ la %r1,S390X_KMC(%r4)
+ .long 0xb92f0042 # kmc %r4,%r2
+
+ lghi %r0,S390X_QUERY # query kmac capability vector
+ la %r1,S390X_KMAC(%r4)
+ .long 0xb91e0042 # kmac %r4,%r2
+
+ tmhh %r3,0x0004 # check for message-security-assist-4
+ jz .Lret
+
+ lghi %r0,S390X_QUERY # query kmctr capability vector
+ la %r1,S390X_KMCTR(%r4)
+ .long 0xb92d2042 # kmctr %r4,%r2,%r2
+
+ lghi %r0,S390X_QUERY # query kmo capability vector
+ la %r1,S390X_KMO(%r4)
+ .long 0xb92b0042 # kmo %r4,%r2
+
+ lghi %r0,S390X_QUERY # query kmf capability vector
+ la %r1,S390X_KMF(%r4)
+ .long 0xb92a0042 # kmf %r4,%r2
+
+ tml %r2,0x40 # check for message-security-assist-5
+ jz .Lret
+
+ lghi %r0,S390X_QUERY # query prno capability vector
+ la %r1,S390X_PRNO(%r4)
+ .long 0xb93c0042 # prno %r4,%r2
+
+ lg %r2,S390X_STFLE+16(%r4)
+ tmhl %r2,0x2000 # check for message-security-assist-8
+ jz .Lret
+
+ lghi %r0,S390X_QUERY # query kma capability vector
+ la %r1,S390X_KMA(%r4)
+ .long 0xb9294022 # kma %r2,%r4,%r2
+
+.Lret:
+ br %r14
+.size OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities
+
+.globl OPENSSL_rdtsc
+.type OPENSSL_rdtsc,@function
+.align 16
+OPENSSL_rdtsc:
+ larl %r4,OPENSSL_s390xcap_P
+ tm S390X_STFLE+3(%r4),0x40 # check for store-clock-fast facility
+ jz .Lstck
+
+ .long 0xb27cf010 # stckf 16(%r15)
+ lg %r2,16(%r15)
+ br %r14
+.Lstck:
+ stck 16(%r15)
+ lg %r2,16(%r15)
+ br %r14
+.size OPENSSL_rdtsc,.-OPENSSL_rdtsc
+
+.globl OPENSSL_atomic_add
+.type OPENSSL_atomic_add,@function
+.align 16
+OPENSSL_atomic_add:
+ l %r1,0(%r2)
+.Lspin: lr %r0,%r1
+ ar %r0,%r3
+ cs %r1,%r0,0(%r2)
+ brc 4,.Lspin
+ lgfr %r2,%r0 # OpenSSL expects the new value
+ br %r14
+.size OPENSSL_atomic_add,.-OPENSSL_atomic_add
+
+.globl OPENSSL_wipe_cpu
+.type OPENSSL_wipe_cpu,@function
+.align 16
+OPENSSL_wipe_cpu:
+ xgr %r0,%r0
+ xgr %r1,%r1
+ lgr %r2,%r15
+ xgr %r3,%r3
+ xgr %r4,%r4
+ lzdr %f0
+ lzdr %f1
+ lzdr %f2
+ lzdr %f3
+ lzdr %f4
+ lzdr %f5
+ lzdr %f6
+ lzdr %f7
+ br %r14
+.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
+
+.globl OPENSSL_cleanse
+.type OPENSSL_cleanse,@function
+.align 16
+OPENSSL_cleanse:
+#if !defined(__s390x__) && !defined(__s390x)
+ llgfr %r3,%r3
+#endif
+ lghi %r4,15
+ lghi %r0,0
+ clgr %r3,%r4
+ jh .Lot
+ clgr %r3,%r0
+ bcr 8,%r14
+.Little:
+ stc %r0,0(%r2)
+ la %r2,1(%r2)
+ brctg %r3,.Little
+ br %r14
+.align 4
+.Lot: tmll %r2,7
+ jz .Laligned
+ stc %r0,0(%r2)
+ la %r2,1(%r2)
+ brctg %r3,.Lot
+.Laligned:
+ srlg %r4,%r3,3
+.Loop: stg %r0,0(%r2)
+ la %r2,8(%r2)
+ brctg %r4,.Loop
+ lghi %r4,7
+ ngr %r3,%r4
+ jnz .Little
+ br %r14
+.size OPENSSL_cleanse,.-OPENSSL_cleanse
+
+.globl CRYPTO_memcmp
+.type CRYPTO_memcmp,@function
+.align 16
+CRYPTO_memcmp:
+#if !defined(__s390x__) && !defined(__s390x)
+ llgfr %r4,%r4
+#endif
+ lghi %r5,0
+ clgr %r4,%r5
+ je .Lno_data
+
+.Loop_cmp:
+ llgc %r0,0(%r2)
+ la %r2,1(%r2)
+ llgc %r1,0(%r3)
+ la %r3,1(%r3)
+ xr %r1,%r0
+ or %r5,%r1
+ brctg %r4,.Loop_cmp
+
+ lnr %r5,%r5
+ srl %r5,31
+.Lno_data:
+ lgr %r2,%r5
+ br %r14
+.size CRYPTO_memcmp,.-CRYPTO_memcmp
+
+.globl OPENSSL_instrument_bus
+.type OPENSSL_instrument_bus,@function
+.align 16
+OPENSSL_instrument_bus:
+ lghi %r2,0
+ br %r14
+.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
+
+.globl OPENSSL_instrument_bus2
+.type OPENSSL_instrument_bus2,@function
+.align 16
+OPENSSL_instrument_bus2:
+ lghi %r2,0
+ br %r14
+.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
+
+.globl OPENSSL_vx_probe
+.type OPENSSL_vx_probe,@function
+.align 16
+OPENSSL_vx_probe:
+ .word 0xe700,0x0000,0x0044 # vzero %v0
+ br %r14
+.size OPENSSL_vx_probe,.-OPENSSL_vx_probe
+.globl s390x_kimd
+.type s390x_kimd,@function
+.align 16
+s390x_kimd:
+ llgfr %r0,%r4
+ lgr %r1,%r5
+
+ .long 0xb93e0002 # kimd %r0,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_kimd,.-s390x_kimd
+.globl s390x_klmd
+.type s390x_klmd,@function
+.align 32
+s390x_klmd:
+ llgfr %r0,%r6
+ lg %r1,160(%r15)
+
+ .long 0xb93f0042 # klmd %r4,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_klmd,.-s390x_klmd
+.globl s390x_km
+.type s390x_km,@function
+.align 16
+s390x_km:
+ lr %r0,%r5
+ lgr %r1,%r6
+
+ .long 0xb92e0042 # km %r4,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_km,.-s390x_km
+.globl s390x_kmac
+.type s390x_kmac,@function
+.align 16
+s390x_kmac:
+ lr %r0,%r4
+ lgr %r1,%r5
+
+ .long 0xb91e0002 # kmac %r0,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_kmac,.-s390x_kmac
+.globl s390x_kmo
+.type s390x_kmo,@function
+.align 16
+s390x_kmo:
+ lr %r0,%r5
+ lgr %r1,%r6
+
+ .long 0xb92b0042 # kmo %r4,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_kmo,.-s390x_kmo
+.globl s390x_kmf
+.type s390x_kmf,@function
+.align 16
+s390x_kmf:
+ lr %r0,%r5
+ lgr %r1,%r6
+
+ .long 0xb92a0042 # kmf %r4,%r2
+ brc 1,.-4 # pay attention to "partial completion"
+
+ br %r14
+.size s390x_kmf,.-s390x_kmf
+.globl s390x_kma
+.type s390x_kma,@function
+.align 16
+s390x_kma:
+ stg %r6,6*8(%r15)
+ lmg %r0,%r1,160(%r15)
+
+ .long 0xb9292064 # kma %r6,%r2,%r4
+ brc 1,.-4 # pay attention to "partial completion"
+
+ lg %r6,6*8(%r15)
+ br %r14
+.size s390x_kma,.-s390x_kma
+.section .init
+ brasl %r14,OPENSSL_cpuid_setup
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S
new file mode 100644
index 0000000000..1a74fdb20e
--- /dev/null
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/keccak1600-s390x.S
@@ -0,0 +1,464 @@
+.text
+
+.type __KeccakF1600,@function
+.align 32
+__KeccakF1600:
+ stg %r14,8*14(%r15)
+ lg %r0,160(%r2)
+ lg %r1,168(%r2)
+ lg %r5,176(%r2)
+ lg %r6,184(%r2)
+ lg %r7,192(%r2)
+ larl %r4,iotas
+ j .Loop
+
+.align 16
+.Loop:
+ lg %r8,0(%r2)
+ lg %r9,48(%r2)
+ lg %r10,96(%r2)
+ lg %r11,144(%r2)
+
+ xgr %r0,%r8
+ xg %r1,8(%r2)
+ xg %r5,16(%r2)
+ xg %r6,24(%r2)
+ lgr %r12,%r7
+ xg %r7,32(%r2)
+
+ xg %r0,40(%r2)
+ xgr %r1,%r9
+ xg %r5,56(%r2)
+ xg %r6,64(%r2)
+ xg %r7,72(%r2)
+
+ xg %r0,80(%r2)
+ xg %r1,88(%r2)
+ xgr %r5,%r10
+ xg %r6,104(%r2)
+ xg %r7,112(%r2)
+
+ xg %r0,120(%r2)
+ xg %r1,128(%r2)
+ xg %r5,136(%r2)
+ xgr %r6,%r11
+ xg %r7,152(%r2)
+
+ lgr %r13,%r5
+ rllg %r5,%r5,1
+ xgr %r5,%r0 # D[1] = ROL64(C[2], 1) ^ C[0]
+
+ rllg %r0,%r0,1
+ xgr %r0,%r6 # D[4] = ROL64(C[0], 1) ^ C[3]
+
+ rllg %r6,%r6,1
+ xgr %r6,%r1 # D[2] = ROL64(C[3], 1) ^ C[1]
+
+ rllg %r1,%r1,1
+ xgr %r1,%r7 # D[0] = ROL64(C[1], 1) ^ C[4]
+
+ rllg %r7,%r7,1
+ xgr %r7,%r13 # D[3] = ROL64(C[4], 1) ^ C[2]
+ xgr %r9,%r5
+ xgr %r10,%r6
+ xgr %r11,%r7
+ rllg %r9,%r9,44
+ xgr %r12,%r0
+ rllg %r10,%r10,43
+ xgr %r8,%r1
+
+ lgr %r13,%r9
+ ogr %r9,%r10
+ rllg %r11,%r11,21
+ xgr %r9,%r8 # C[0] ^ ( C[1] | C[2])
+ rllg %r12,%r12,14
+ xg %r9,0(%r4)
+ la %r4,8(%r4)
+ stg %r9,0(%r3) # R[0][0] = C[0] ^ ( C[1] | C[2]) ^ iotas[i]
+
+ lgr %r14,%r12
+ ngr %r12,%r11
+ lghi %r9,-1 # no 'not' instruction :-(
+ xgr %r12,%r10 # C[2] ^ ( C[4] & C[3])
+ xgr %r10,%r9 # not %r10
+ stg %r12,16(%r3) # R[0][2] = C[2] ^ ( C[4] & C[3])
+ ogr %r10,%r11
+ xgr %r10,%r13 # C[1] ^ (~C[2] | C[3])
+
+ ngr %r13,%r8
+ stg %r10,8(%r3) # R[0][1] = C[1] ^ (~C[2] | C[3])
+ xgr %r13,%r14 # C[4] ^ ( C[1] & C[0])
+ ogr %r14,%r8
+ stg %r13,32(%r3) # R[0][4] = C[4] ^ ( C[1] & C[0])
+ xgr %r14,%r11 # C[3] ^ ( C[4] | C[0])
+ stg %r14,24(%r3) # R[0][3] = C[3] ^ ( C[4] | C[0])
+
+
+ lg %r8,24(%r2)
+ lg %r12,176(%r2)
+ lg %r11,128(%r2)
+ lg %r9,72(%r2)
+ lg %r10,80(%r2)
+
+ xgr %r8,%r7
+ xgr %r12,%r6
+ rllg %r8,%r8,28
+ xgr %r11,%r5
+ rllg %r12,%r12,61
+ xgr %r9,%r0
+ rllg %r11,%r11,45
+ xgr %r10,%r1
+
+ lgr %r13,%r8
+ ogr %r8,%r12
+ rllg %r9,%r9,20
+ xgr %r8,%r11 # C[3] ^ (C[0] | C[4])
+ rllg %r10,%r10,3
+ stg %r8,64(%r3) # R[1][3] = C[3] ^ (C[0] | C[4])
+
+ lgr %r14,%r9
+ ngr %r9,%r13
+ lghi %r8,-1 # no 'not' instruction :-(
+ xgr %r9,%r12 # C[4] ^ (C[1] & C[0])
+ xgr %r12,%r8 # not %r12
+ stg %r9,72(%r3) # R[1][4] = C[4] ^ (C[1] & C[0])
+
+ ogr %r12,%r11
+ xgr %r12,%r10 # C[2] ^ (~C[4] | C[3])
+
+ ngr %r11,%r10
+ stg %r12,56(%r3) # R[1][2] = C[2] ^ (~C[4] | C[3])
+ xgr %r11,%r14 # C[1] ^ (C[3] & C[2])
+ ogr %r14,%r10
+ stg %r11,48(%r3) # R[1][1] = C[1] ^ (C[3] & C[2])
+ xgr %r14,%r13 # C[0] ^ (C[1] | C[2])
+ stg %r14,40(%r3) # R[1][0] = C[0] ^ (C[1] | C[2])
+
+
+ lg %r10,104(%r2)
+ lg %r11,152(%r2)
+ lg %r9,56(%r2)
+ lg %r12,160(%r2)
+ lg %r8,8(%r2)
+
+ xgr %r10,%r7
+ xgr %r11,%r0
+ rllg %r10,%r10,25
+ xgr %r9,%r6
+ rllg %r11,%r11,8
+ xgr %r12,%r1
+ rllg %r9,%r9,6
+ xgr %r8,%r5
+
+ lgr %r13,%r10
+ ngr %r10,%r11
+ rllg %r12,%r12,18
+ xgr %r10,%r9 # C[1] ^ ( C[2] & C[3])
+ lghi %r14,-1 # no 'not' instruction :-(
+ stg %r10,88(%r3) # R[2][1] = C[1] ^ ( C[2] & C[3])
+
+ xgr %r11,%r14 # not %r11
+ lgr %r14,%r12
+ ngr %r12,%r11
+ rllg %r8,%r8,1
+ xgr %r12,%r13 # C[2] ^ ( C[4] & ~C[3])
+ ogr %r13,%r9
+ stg %r12,96(%r3) # R[2][2] = C[2] ^ ( C[4] & ~C[3])
+ xgr %r13,%r8 # C[0] ^ ( C[2] | C[1])
+
+ ngr %r9,%r8
+ stg %r13,80(%r3) # R[2][0] = C[0] ^ ( C[2] | C[1])
+ xgr %r9,%r14 # C[4] ^ ( C[1] & C[0])
+ ogr %r8,%r14
+ stg %r9,112(%r3) # R[2][4] = C[4] ^ ( C[1] & C[0])
+ xgr %r8,%r11 # ~C[3] ^ ( C[0] | C[4])
+ stg %r8,104(%r3) # R[2][3] = ~C[3] ^ ( C[0] | C[4])
+
+
+ lg %r10,88(%r2)
+ lg %r11,136(%r2)
+ lg %r9,40(%r2)
+ lg %r12,184(%r2)
+ lg %r8,32(%r2)
+
+ xgr %r10,%r5
+ xgr %r11,%r6
+ rllg %r10,%r10,10
+ xgr %r9,%r1
+ rllg %r11,%r11,15
+ xgr %r12,%r7
+ rllg %r9,%r9,36
+ xgr %r8,%r0
+ rllg %r12,%r12,56
+
+ lgr %r13,%r10
+ ogr %r10,%r11
+ lghi %r14,-1 # no 'not' instruction :-(
+ xgr %r10,%r9 # C[1] ^ ( C[2] | C[3])
+ xgr %r11,%r14 # not %r11
+ stg %r10,128(%r3) # R[3][1] = C[1] ^ ( C[2] | C[3])
+
+ lgr %r14,%r12
+ ogr %r12,%r11
+ rllg %r8,%r8,27
+ xgr %r12,%r13 # C[2] ^ ( C[4] | ~C[3])
+ ngr %r13,%r9
+ stg %r12,136(%r3) # R[3][2] = C[2] ^ ( C[4] | ~C[3])
+ xgr %r13,%r8 # C[0] ^ ( C[2] & C[1])
+
+ ogr %r9,%r8
+ stg %r13,120(%r3) # R[3][0] = C[0] ^ ( C[2] & C[1])
+ xgr %r9,%r14 # C[4] ^ ( C[1] | C[0])
+ ngr %r8,%r14
+ stg %r9,152(%r3) # R[3][4] = C[4] ^ ( C[1] | C[0])
+ xgr %r8,%r11 # ~C[3] ^ ( C[0] & C[4])
+ stg %r8,144(%r3) # R[3][3] = ~C[3] ^ ( C[0] & C[4])
+
+
+ xg %r6,16(%r2)
+ xg %r7,64(%r2)
+ xg %r5,168(%r2)
+ xg %r0,112(%r2)
+ xgr %r3,%r2 # xchg %r3,%r2
+ rllg %r6,%r6,62
+ xg %r1,120(%r2)
+ rllg %r7,%r7,55
+ xgr %r2,%r3
+ rllg %r5,%r5,2
+ xgr %r3,%r2
+ rllg %r0,%r0,39
+ lgr %r13,%r6
+ ngr %r6,%r7
+ lghi %r14,-1 # no 'not' instruction :-(
+ xgr %r6,%r5 # C[4] ^ ( C[0] & C[1])
+ xgr %r7,%r14 # not %r7
+ stg %r6,192(%r2) # R[4][4] = C[4] ^ ( C[0] & C[1])
+
+ lgr %r14,%r0
+ ngr %r0,%r7
+ rllg %r1,%r1,41
+ xgr %r0,%r13 # C[0] ^ ( C[2] & ~C[1])
+ ogr %r13,%r5
+ stg %r0,160(%r2) # R[4][0] = C[0] ^ ( C[2] & ~C[1])
+ xgr %r13,%r1 # C[3] ^ ( C[0] | C[4])
+
+ ngr %r5,%r1
+ stg %r13,184(%r2) # R[4][3] = C[3] ^ ( C[0] | C[4])
+ xgr %r5,%r14 # C[2] ^ ( C[4] & C[3])
+ ogr %r1,%r14
+ stg %r5,176(%r2) # R[4][2] = C[2] ^ ( C[4] & C[3])
+ xgr %r1,%r7 # ~C[1] ^ ( C[2] | C[3])
+
+ lgr %r7,%r6 # harmonize with the loop top
+ lgr %r6,%r13
+ stg %r1,168(%r2) # R[4][1] = ~C[1] ^ ( C[2] | C[3])
+
+ tmll %r4,255
+ jnz .Loop
+
+ lg %r14,8*14(%r15)
+ br %r14
+.size __KeccakF1600,.-__KeccakF1600
+.type KeccakF1600,@function
+.align 32
+KeccakF1600:
+.LKeccakF1600:
+ lghi %r1,-360
+ stmg %r6,%r15,8*6(%r15)
+ lgr %r0,%r15
+ la %r15,0(%r1,%r15)
+ stg %r0,0(%r15)
+
+ lghi %r8,-1 # no 'not' instruction :-(
+ lghi %r9,-1
+ lghi %r10,-1
+ lghi %r11,-1
+ lghi %r12,-1
+ lghi %r13,-1
+ xg %r8,8(%r2)
+ xg %r9,16(%r2)
+ xg %r10,64(%r2)
+ xg %r11,96(%r2)
+ xg %r12,136(%r2)
+ xg %r13,160(%r2)
+ stmg %r8,%r9,8(%r2)
+ stg %r10,64(%r2)
+ stg %r11,96(%r2)
+ stg %r12,136(%r2)
+ stg %r13,160(%r2)
+
+ la %r3,160(%r15)
+
+ bras %r14,__KeccakF1600
+
+ lghi %r8,-1 # no 'not' instruction :-(
+ lghi %r9,-1
+ lghi %r10,-1
+ lghi %r11,-1
+ lghi %r12,-1
+ lghi %r13,-1
+ xg %r8,8(%r2)
+ xg %r9,16(%r2)
+ xg %r10,64(%r2)
+ xg %r11,96(%r2)
+ xg %r12,136(%r2)
+ xg %r13,160(%r2)
+ stmg %r8,%r9,8(%r2)
+ stg %r10,64(%r2)
+ stg %r11,96(%r2)
+ stg %r12,136(%r2)
+ stg %r13,160(%r2)
+
+ lmg %r6,%r15,360+6*8(%r15)
+ br %r14
+.size KeccakF1600,.-KeccakF1600
+.globl SHA3_absorb
+.type SHA3_absorb,@function
+.align 32
+SHA3_absorb:
+ lghi %r1,-360
+ stmg %r5,%r15,8*5(%r15)
+ lgr %r0,%r15
+ la %r15,0(%r1,%r15)
+ stg %r0,0(%r15)
+
+ lghi %r8,-1 # no 'not' instruction :-(
+ lghi %r9,-1
+ lghi %r10,-1
+ lghi %r11,-1
+ lghi %r12,-1
+ lghi %r13,-1
+ xg %r8,8(%r2)
+ xg %r9,16(%r2)
+ xg %r10,64(%r2)
+ xg %r11,96(%r2)
+ xg %r12,136(%r2)
+ xg %r13,160(%r2)
+ stmg %r8,%r9,8(%r2)
+ stg %r10,64(%r2)
+ stg %r11,96(%r2)
+ stg %r12,136(%r2)
+ stg %r13,160(%r2)
+
+.Loop_absorb:
+ clgr %r4,%r5
+ jl .Ldone_absorb
+
+ srlg %r5,%r5,3
+ la %r1,0(%r2)
+
+.Lblock_absorb:
+ lrvg %r0,0(%r3)
+ la %r3,8(%r3)
+ xg %r0,0(%r1)
+ aghi %r4,-8
+ stg %r0,0(%r1)
+ la %r1,8(%r1)
+ brct %r5,.Lblock_absorb
+
+ stmg %r3,%r4,360+3*8(%r15)
+ la %r3,160(%r15)
+ bras %r14,__KeccakF1600
+ lmg %r3,%r5,360+3*8(%r15)
+ j .Loop_absorb
+
+.align 16
+.Ldone_absorb:
+ lghi %r8,-1 # no 'not' instruction :-(
+ lghi %r9,-1
+ lghi %r10,-1
+ lghi %r11,-1
+ lghi %r12,-1
+ lghi %r13,-1
+ xg %r8,8(%r2)
+ xg %r9,16(%r2)
+ xg %r10,64(%r2)
+ xg %r11,96(%r2)
+ xg %r12,136(%r2)
+ xg %r13,160(%r2)
+ stmg %r8,%r9,8(%r2)
+ stg %r10,64(%r2)
+ stg %r11,96(%r2)
+ stg %r12,136(%r2)
+ stg %r13,160(%r2)
+
+ lgr %r2,%r4 # return value
+
+ lmg %r6,%r15,360+6*8(%r15)
+ br %r14
+.size SHA3_absorb,.-SHA3_absorb
+.globl SHA3_squeeze
+.type SHA3_squeeze,@function
+.align 32
+SHA3_squeeze:
+ srlg %r5,%r5,3
+ stg %r14,2*8(%r15)
+ lghi %r14,8
+ stg %r5,5*8(%r15)
+ la %r1,0(%r2)
+
+ j .Loop_squeeze
+
+.align 16
+.Loop_squeeze:
+ clgr %r4,%r14
+ jl .Ltail_squeeze
+
+ lrvg %r0,0(%r1)
+ la %r1,8(%r1)
+ stg %r0,0(%r3)
+ la %r3,8(%r3)
+ aghi %r4,-8 # len -= 8
+ jz .Ldone_squeeze
+
+ brct %r5,.Loop_squeeze # bsz--
+
+ stmg %r3,%r4,3*8(%r15)
+ bras %r14,.LKeccakF1600
+ lmg %r3,%r5,3*8(%r15)
+ lghi %r14,8
+ la %r1,0(%r2)
+ j .Loop_squeeze
+
+.Ltail_squeeze:
+ lg %r0,0(%r1)
+.Loop_tail_squeeze:
+ stc %r0,0(%r3)
+ la %r3,1(%r3)
+ srlg %r0,%r0,8
+ brct %r4,.Loop_tail_squeeze
+
+.Ldone_squeeze:
+ lg %r14,2*8(%r15)
+ br %r14
+.size SHA3_squeeze,.-SHA3_squeeze
+.align 256
+ .quad 0,0,0,0,0,0,0,0
+.type iotas,@object
+iotas:
+ .quad 0x0000000000000001
+ .quad 0x0000000000008082
+ .quad 0x800000000000808a
+ .quad 0x8000000080008000
+ .quad 0x000000000000808b
+ .quad 0x0000000080000001
+ .quad 0x8000000080008081
+ .quad 0x8000000000008009
+ .quad 0x000000000000008a
+ .quad 0x0000000000000088
+ .quad 0x0000000080008009
+ .quad 0x000000008000000a
+ .quad 0x000000008000808b
+ .quad 0x800000000000008b
+ .quad 0x8000000000008089
+ .quad 0x8000000000008003
+ .quad 0x8000000000008002
+ .quad 0x8000000000000080
+ .quad 0x000000000000800a
+ .quad 0x800000008000000a
+ .quad 0x8000000080008081
+ .quad 0x8000000000008080
+ .quad 0x0000000080000001
+ .quad 0x8000000080008008
+.size iotas,.-iotas
+.asciz "Keccak-1600 absorb and squeeze for s390x, CRYPTOGAMS by <appro@openssl.org>"
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha1-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha1-s390x.S
index 5a556b5a2d..37413bfb08 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha1-s390x.S
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha1-s390x.S
@@ -1,3 +1,5 @@
+#include "s390x_arch.h"
+
.text
.align 64
.type Ktable,@object
@@ -8,7 +10,7 @@ Ktable: .long 0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6
.type sha1_block_data_order,@function
sha1_block_data_order:
larl %r1,OPENSSL_s390xcap_P
- lg %r0,16(%r1) # check kimd capabilities
+ lg %r0,S390X_KIMD(%r1) # check kimd capabilities
tmhh %r0,16384
jz .Lsoftware
lghi %r0,1
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha256-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha256-s390x.S
index e66c672764..45d3601ac2 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha256-s390x.S
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha256-s390x.S
@@ -1,3 +1,5 @@
+#include "s390x_arch.h"
+
.text
.align 64
.type K256,@object
@@ -24,7 +26,7 @@ K256:
sha256_block_data_order:
sllg %r4,%r4,6
larl %r1,OPENSSL_s390xcap_P
- lg %r0,16(%r1) # check kimd capabilities
+ lg %r0,S390X_KIMD(%r1) # check kimd capabilities
tmhh %r0,8192
jz .Lsoftware
lghi %r0,2
@@ -1234,7 +1236,7 @@ sha256_block_data_order:
clg %r3,256(%r15)
jne .Lloop
- lmg %r6,%r15,272(%r15)
+ lmg %r6,%r15,272(%r15)
br %r14
.size sha256_block_data_order,.-sha256_block_data_order
.string "SHA256 block transform for s390x, CRYPTOGAMS by <appro@openssl.org>"
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha512-s390x.S b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha512-s390x.S
index 5ff5c6bf9f..79e4277351 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha512-s390x.S
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/sha/sha512-s390x.S
@@ -1,3 +1,5 @@
+#include "s390x_arch.h"
+
.text
.align 64
.type K512,@object
@@ -48,7 +50,7 @@ K512:
sha512_block_data_order:
sllg %r4,%r4,7
larl %r1,OPENSSL_s390xcap_P
- lg %r0,16(%r1) # check kimd capabilities
+ lg %r0,S390X_KIMD(%r1) # check kimd capabilities
tmhh %r0,4096
jz .Lsoftware
lghi %r0,3
@@ -1258,7 +1260,7 @@ sha512_block_data_order:
clg %r3,320(%r15)
jne .Lloop
- lmg %r6,%r15,336(%r15)
+ lmg %r6,%r15,336(%r15)
br %r14
.size sha512_block_data_order,.-sha512_block_data_order
.string "SHA512 block transform for s390x, CRYPTOGAMS by <appro@openssl.org>"