Skip to content

Commit c39f1fe

Browse files
committed
PPC 32 ASM: SHA-256
Pure and inline ASM for the PowerPC 32-bit.
1 parent 3e5e470 commit c39f1fe

File tree

5 files changed

+2664
-0
lines changed

5 files changed

+2664
-0
lines changed

configure.ac

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,11 @@ then
12111211
AC_MSG_ERROR([--enable-all-asm is incompatible with --disable-armasm])
12121212
fi
12131213

1214+
if test "$enable_ppc32_asm" = "no"
1215+
then
1216+
AC_MSG_ERROR([--enable-all-asm is incompatible with --disable-ppc32-asm])
1217+
fi
1218+
12141219
case "$host_cpu" in
12151220
*x86_64*|*amd64*)
12161221
if test "$enable_intelasm" = ""
@@ -1240,6 +1245,14 @@ then
12401245
fi
12411246
fi
12421247
;;
1248+
*powerpc64*)
1249+
;;
1250+
*powerpc*)
1251+
if test "$enable_ppc32_asm" = ""
1252+
then
1253+
enable_ppc32_asm=yes
1254+
fi
1255+
;;
12431256
esac
12441257
fi
12451258

@@ -3488,6 +3501,42 @@ do
34883501
done
34893502

34903503

3504+
# PPC32 Assembly
3505+
AC_ARG_ENABLE([ppc32-asm],
3506+
[AS_HELP_STRING([--enable-ppc32-asm],[Enable wolfSSL PowerPC 32-bit ASM support (default: disabled).])],
3507+
[ ENABLED_PPC32_ASM=$enableval ],
3508+
[ ENABLED_PPC32_ASM=no ]
3509+
)
3510+
3511+
3512+
if test "$ENABLED_PPC32_ASM" != "no" && test "$ENABLED_ASM" = "yes"
3513+
then
3514+
ENABLED_PPC32_ASM_OPTS=$ENABLED_PPC32_ASM
3515+
for v in `echo $ENABLED_PPC32_ASM_OPTS | tr "," " "`
3516+
do
3517+
case $v in
3518+
yes)
3519+
;;
3520+
inline)
3521+
ENABLED_PPC32_ASM_INLINE=yes
3522+
;;
3523+
*)
3524+
AC_MSG_ERROR([Invalid RISC-V option [yes,inline]: $ENABLED_PPC32_ASM.])
3525+
break
3526+
;;
3527+
esac
3528+
done
3529+
3530+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_PPC32_ASM"
3531+
AC_MSG_NOTICE([32-bit PowerPC assembly for SHA-256])
3532+
ENABLED_PPC32_ASM=yes
3533+
fi
3534+
if test "$ENABLED_PPC32_ASM_INLINE" = "yes"; then
3535+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_PPC32_ASM_INLINE"
3536+
else
3537+
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_PPC32_ASM"
3538+
fi
3539+
34913540
# Xilinx hardened crypto
34923541
AC_ARG_ENABLE([xilinx],
34933542
[AS_HELP_STRING([--enable-xilinx],[Enable wolfSSL support for Xilinx hardened crypto(default: disabled)])],
@@ -10564,6 +10613,8 @@ AM_CONDITIONAL([BUILD_ARM_NONTHUMB],[test "$ENABLED_ARM_THUMB" != "yes" || test
1056410613
AM_CONDITIONAL([BUILD_ARM_32],[test "$ENABLED_ARM_32" = "yes" || test "$ENABLED_USERSETTINGS" = "yes"])
1056510614
AM_CONDITIONAL([BUILD_ARM_64],[test "$ENABLED_ARM_64" = "yes" || test "$ENABLED_USERSETTINGS" = "yes"])
1056610615
AM_CONDITIONAL([BUILD_RISCV_ASM],[test "x$ENABLED_RISCV_ASM" = "xyes"])
10616+
AM_CONDITIONAL([BUILD_PPC32_ASM],[test "x$ENABLED_PPC32_ASM" = "xyes"])
10617+
AM_CONDITIONAL([BUILD_PPC32_ASM_INLINE],[test "x$ENABLED_PPC32_ASM_INLINE" = "xyes"])
1056710618
AM_CONDITIONAL([BUILD_XILINX],[test "x$ENABLED_XILINX" = "xyes"])
1056810619
AM_CONDITIONAL([BUILD_AESNI],[test "x$ENABLED_AESNI" = "xyes"])
1056910620
AM_CONDITIONAL([BUILD_INTELASM],[test "x$ENABLED_INTELASM" = "xyes"])
@@ -11217,6 +11268,11 @@ echo " * ARM ASM: $ENABLED_ARMASM"
1121711268
echo " * ARM ASM SHA512/SHA3 Crypto $ENABLED_ARMASM_SHA3"
1121811269
echo " * ARM ASM SM3/SM4 Crypto $ENABLED_ARMASM_CRYPTO_SM4"
1121911270
echo " * RISC-V ASM $ENABLED_RISCV_ASM"
11271+
if test "$ENABLED_PPC32_ASM_INLINE" = "yes"
11272+
then
11273+
ENABLED_PPC32_ASM="inline C"
11274+
fi
11275+
echo " * PPC32 ASM $ENABLED_PPC32_ASM"
1122011276
echo " * Write duplicate: $ENABLED_WRITEDUP"
1122111277
echo " * Xilinx Hardware Acc.: $ENABLED_XILINX"
1122211278
echo " * C89: $ENABLED_C89"

src/include.am

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,19 @@ endif !BUILD_X86_ASM
251251
endif !BUILD_ARMASM
252252
endif !BUILD_ARMASM_NEON
253253

254+
254255
if BUILD_RISCV_ASM
255256
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
256257
endif BUILD_RISCV_ASM
257258

259+
if BUILD_PPC32_ASM
260+
if BUILD_PPC32_ASM_INLINE
261+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
262+
else
263+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
264+
endif !BUILD_PPC32_ASM_INLINE
265+
endif BUILD_PPC32_ASM
266+
258267
if BUILD_SHA512
259268
if BUILD_RISCV_ASM
260269
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha512.c
@@ -455,6 +464,14 @@ if BUILD_RISCV_ASM
455464
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
456465
endif BUILD_RISCV_ASM
457466

467+
if BUILD_PPC32_ASM
468+
if BUILD_PPC32_ASM_INLINE
469+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
470+
else
471+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
472+
endif !BUILD_PPC32_ASM_INLINE
473+
endif BUILD_PPC32_ASM
474+
458475
if BUILD_SHA512
459476
if BUILD_RISCV_ASM
460477
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha512.c
@@ -718,6 +735,14 @@ if BUILD_RISCV_ASM
718735
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
719736
endif BUILD_RISCV_ASM
720737

738+
if BUILD_PPC32_ASM
739+
if BUILD_PPC32_ASM_INLINE
740+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
741+
else
742+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
743+
endif !BUILD_PPC32_ASM_INLINE
744+
endif BUILD_PPC32_ASM
745+
721746
endif !BUILD_FIPS_CURRENT
722747

723748
if BUILD_AFALG

0 commit comments

Comments
 (0)