summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2013-11-27 22:39:13 +0100
committerAndy Polyakov <appro@openssl.org>2013-11-27 22:39:13 +0100
commit07f3e4f3f902040a35b7fc9e207899c33bff0637 (patch)
treecf00a3464ae07a08f185945ea354db5690cb6b4b
parentb5c54c914fcbd07752c358e0d14b7e56706195a3 (diff)
Take vpaes-ppc module into loop.
-rwxr-xr-xConfigure4
-rw-r--r--TABLE18
-rw-r--r--crypto/evp/e_aes.c5
-rw-r--r--crypto/ppccap.c2
4 files changed, 17 insertions, 12 deletions
diff --git a/Configure b/Configure
index cf43c8d16b..65784255c5 100755
--- a/Configure
+++ b/Configure
@@ -139,7 +139,7 @@ my $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o s390x-gf2m.o::aes
my $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o::aes_cbc.o aes-armv4.o bsaes-armv7.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::ghash-armv4.o::void";
my $parisc11_asm="pariscid.o:bn_asm.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::32";
my $parisc20_asm="pariscid.o:pa-risc2W.o parisc-mont.o::aes_core.o aes_cbc.o aes-parisc.o:::sha1-parisc.o sha256-parisc.o sha512-parisc.o::rc4-parisc.o:::::ghash-parisc.o::64";
-my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::";
+my $ppc64_asm="ppccpuid.o ppccap.o:bn-ppc.o ppc-mont.o ppc64-mont.o::aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::::";
my $ppc32_asm=$ppc64_asm;
my $no_asm=":::::::::::::::void";
@@ -365,7 +365,7 @@ my %table=(
####
"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
-"linux-ppc64le","gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
+"linux-ppc64le","gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:".eval{my $asm=$ppc64_asm;$asm=~s/vpaes\-ppc\.o//;$asm}.":linux64le:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::",
"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall::-D_REENTRANT::-ldl -no_cpprt:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
diff --git a/TABLE b/TABLE
index 01f4c52f3e..b64b753932 100644
--- a/TABLE
+++ b/TABLE
@@ -902,7 +902,7 @@ $bn_ops = BN_LLONG RC4_CHAR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -935,7 +935,7 @@ $bn_ops = BN_LLONG RC4_CHAR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1001,7 +1001,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1034,7 +1034,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1463,7 +1463,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -1496,7 +1496,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -2189,7 +2189,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -4466,7 +4466,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
@@ -4499,7 +4499,7 @@ $bn_ops = SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL
$cpuid_obj = ppccpuid.o ppccap.o
$bn_obj = bn-ppc.o ppc-mont.o ppc64-mont.o
$des_obj =
-$aes_obj = aes_core.o aes_cbc.o aes-ppc.o
+$aes_obj = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o
$bf_obj =
$md5_obj =
$sha1_obj = sha1-ppc.o sha256-ppc.o sha512-ppc.o
diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c
index 6c5bc29469..4fc4b5b676 100644
--- a/crypto/evp/e_aes.c
+++ b/crypto/evp/e_aes.c
@@ -154,6 +154,11 @@ void AES_xts_decrypt(const char *inp,char *out,size_t len,
const unsigned char iv[16]);
#endif
+#if defined(VPAES_ASM) && (defined(__powerpc__) || defined(__ppc__))
+extern unsigned int OPENSSL_ppccap_P;
+#define VPAES_CAPABLE (OPENSSL_ppccap_P&(1<<1))
+#endif
+
#if defined(AES_ASM) && !defined(I386_ONLY) && ( \
((defined(__i386) || defined(__i386__) || \
defined(_M_IX86)) && defined(OPENSSL_IA32_SSE2))|| \
diff --git a/crypto/ppccap.c b/crypto/ppccap.c
index 2e2f3fc5c0..361f2dde73 100644
--- a/crypto/ppccap.c
+++ b/crypto/ppccap.c
@@ -13,7 +13,7 @@
#define PPC_FPU64 (1<<0)
#define PPC_ALTIVEC (1<<1)
-static int OPENSSL_ppccap_P = 0;
+unsigned int OPENSSL_ppccap_P = 0;
static sigset_t all_masked;