Commit c991d8ae authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Initial POWER8 support from development branch.



Reviewed-by: default avatarKurt Roeckx <kurt@openssl.org>
Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent be12cb3e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -140,7 +140,7 @@ my $armv4_asm="armcap.o armv4cpuid.o:bn_asm.o armv4-mont.o armv4-gf2m.o::aes_cbc
my $aarch64_asm="armcap.o arm64cpuid.o mem_clr.o:::aes_core.o aes_cbc.o aesv8-armx.o:::sha1-armv8.o sha256-armv8.o sha512-armv8.o:::::::ghashv8-armx.o:";
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 vpaes-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 aesp8-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o:::::::ghashp8-ppc.o:";
my $ppc32_asm=$ppc64_asm;
my $no_asm=":::::::::::::::void";

+30 −30
Original line number Diff line number Diff line
@@ -902,17 +902,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = aix32
$dso_scheme   = dlfcn
@@ -935,17 +935,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = aix32
$dso_scheme   = dlfcn
@@ -1001,17 +1001,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = aix64
$dso_scheme   = dlfcn
@@ -1034,17 +1034,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = aix64
$dso_scheme   = dlfcn
@@ -1463,17 +1463,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = osx32
$dso_scheme   = dlfcn
@@ -1496,17 +1496,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = osx64
$dso_scheme   = dlfcn
@@ -2189,17 +2189,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = osx32
$dso_scheme   = dlfcn
@@ -4466,17 +4466,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = linux32
$dso_scheme   = dlfcn
@@ -4499,17 +4499,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = linux64
$dso_scheme   = dlfcn
@@ -4532,17 +4532,17 @@ $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 vpaes-ppc.o
$aes_obj      = aes_core.o aes_cbc.o aes-ppc.o vpaes-ppc.o aesp8-ppc.o
$bf_obj       = 
$md5_obj      = 
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o
$sha1_obj     = sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-ppc.o
$cast_obj     = 
$rc4_obj      = 
$rmd160_obj   = 
$rc5_obj      = 
$wp_obj       = 
$cmll_obj     = 
$modes_obj    = 
$modes_obj    = ghashp8-ppc.o
$engines_obj  = 
$perlasm_scheme = linux64le
$dso_scheme   = dlfcn
+2 −0
Original line number Diff line number Diff line
@@ -79,6 +79,8 @@ aes-ppc.s: asm/aes-ppc.pl
	$(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
vpaes-ppc.s:	asm/vpaes-ppc.pl
	$(PERL) asm/vpaes-ppc.pl $(PERLASM_SCHEME) $@
aesp8-ppc.s:	asm/aesp8-ppc.pl
	$(PERL) asm/aesp8-ppc.pl $(PERLASM_SCHEME) $@

aes-parisc.s:	asm/aes-parisc.pl
	$(PERL) asm/aes-parisc.pl $(PERLASM_SCHEME) $@
+1940 −0

File added.

Preview size limit exceeded, changes collapsed.

+12 −3
Original line number Diff line number Diff line
@@ -155,9 +155,18 @@ 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__) || defined(_ARCH_PPC))
extern unsigned int OPENSSL_ppccap_P;
#define	VPAES_CAPABLE	(OPENSSL_ppccap_P&(1<<1))
#if	defined(OPENSSL_CPUID_OBJ) && (defined(__powerpc__) || defined(__ppc__) || defined(_ARCH_PPC))
# include "ppc_arch.h"
# ifdef VPAES_ASM
#  define VPAES_CAPABLE	(OPENSSL_ppccap_P & PPC_ALTIVEC)
# endif
# define HWAES_CAPABLE	(OPENSSL_ppccap_P & PPC_CRYPTO207)
# define HWAES_set_encrypt_key aes_p8_set_encrypt_key
# define HWAES_set_decrypt_key aes_p8_set_decrypt_key
# define HWAES_encrypt aes_p8_encrypt
# define HWAES_decrypt aes_p8_decrypt
# define HWAES_cbc_encrypt aes_p8_cbc_encrypt
# define HWAES_ctr32_encrypt_blocks aes_p8_ctr32_encrypt_blocks
#endif

#if	defined(AES_ASM) && !defined(I386_ONLY) &&	(  \
Loading