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 aesp8-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o sha256p8-ppc.o sha512p8-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";
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = aix32
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = aix32
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = aix64
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = aix64
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = osx32
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = osx64
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = osx32
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = linux32
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = linux64
$dso_scheme = dlfcn
$rc5_obj =
$wp_obj =
$cmll_obj =
-$modes_obj =
+$modes_obj = ghashp8-ppc.o
$engines_obj =
$perlasm_scheme = linux64le
$dso_scheme = dlfcn
$(PERL) asm/ghash-parisc.pl $(PERLASM_SCHEME) $@
ghashv8-armx.S: asm/ghashv8-armx.pl
$(PERL) asm/ghashv8-armx.pl $(PERLASM_SCHEME) $@
+ghashp8-ppc.s: asm/ghashp8-ppc.pl
+ $(PERL) asm/ghashp8-ppc.pl $(PERLASM_SCHEME) $@
# GNU make "catch all"
ghash-%.S: asm/ghash-%.pl; $(PERL) $< $(PERLASM_SCHEME) $@
void gcm_init_vis3(u128 Htable[16],const u64 Xi[2]);
void gcm_gmult_vis3(u64 Xi[2],const u128 Htable[16]);
void gcm_ghash_vis3(u64 Xi[2],const u128 Htable[16],const u8 *inp,size_t len);
+#elif defined(OPENSSL_CPUID_OBJ) && (defined(__powerpc__) || defined(__ppc__) || defined(_ARCH_PPC))
+# define GHASH_ASM_PPC
+# define GCM_FUNCREF_4BIT
+extern unsigned int OPENSSL_ppccap_P[];
+void gcm_init_p8(u128 Htable[16],const u64 Xi[2]);
+void gcm_gmult_p8(u64 Xi[2],const u128 Htable[16]);
+void gcm_ghash_p8(u64 Xi[2],const u128 Htable[16],const u8 *inp,size_t len);
# endif
#endif
ctx->gmult = gcm_gmult_4bit;
ctx->ghash = gcm_ghash_4bit;
}
+# elif defined(GHASH_ASM_PPC)
+ if (OPENSSL_ppccap_P[0] & (1<<2)) {
+ gcm_init_p8(ctx->Htable,ctx->H.u);
+ ctx->gmult = gcm_gmult_p8;
+ ctx->ghash = gcm_ghash_p8;
+ } else {
+ gcm_init_4bit(ctx->Htable,ctx->H.u);
+ ctx->gmult = gcm_gmult_4bit;
+ ctx->ghash = gcm_ghash_4bit;
+ }
# else
gcm_init_4bit(ctx->Htable,ctx->H.u);
# endif