mirror of https://github.com/wolfSSL/wolfssl.git
parent
3e5e470005
commit
c39f1fe721
56
configure.ac
56
configure.ac
|
@ -1211,6 +1211,11 @@ then
|
|||
AC_MSG_ERROR([--enable-all-asm is incompatible with --disable-armasm])
|
||||
fi
|
||||
|
||||
if test "$enable_ppc32_asm" = "no"
|
||||
then
|
||||
AC_MSG_ERROR([--enable-all-asm is incompatible with --disable-ppc32-asm])
|
||||
fi
|
||||
|
||||
case "$host_cpu" in
|
||||
*x86_64*|*amd64*)
|
||||
if test "$enable_intelasm" = ""
|
||||
|
@ -1240,6 +1245,14 @@ then
|
|||
fi
|
||||
fi
|
||||
;;
|
||||
*powerpc64*)
|
||||
;;
|
||||
*powerpc*)
|
||||
if test "$enable_ppc32_asm" = ""
|
||||
then
|
||||
enable_ppc32_asm=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -3488,6 +3501,42 @@ do
|
|||
done
|
||||
|
||||
|
||||
# PPC32 Assembly
|
||||
AC_ARG_ENABLE([ppc32-asm],
|
||||
[AS_HELP_STRING([--enable-ppc32-asm],[Enable wolfSSL PowerPC 32-bit ASM support (default: disabled).])],
|
||||
[ ENABLED_PPC32_ASM=$enableval ],
|
||||
[ ENABLED_PPC32_ASM=no ]
|
||||
)
|
||||
|
||||
|
||||
if test "$ENABLED_PPC32_ASM" != "no" && test "$ENABLED_ASM" = "yes"
|
||||
then
|
||||
ENABLED_PPC32_ASM_OPTS=$ENABLED_PPC32_ASM
|
||||
for v in `echo $ENABLED_PPC32_ASM_OPTS | tr "," " "`
|
||||
do
|
||||
case $v in
|
||||
yes)
|
||||
;;
|
||||
inline)
|
||||
ENABLED_PPC32_ASM_INLINE=yes
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Invalid RISC-V option [yes,inline]: $ENABLED_PPC32_ASM.])
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_PPC32_ASM"
|
||||
AC_MSG_NOTICE([32-bit PowerPC assembly for SHA-256])
|
||||
ENABLED_PPC32_ASM=yes
|
||||
fi
|
||||
if test "$ENABLED_PPC32_ASM_INLINE" = "yes"; then
|
||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_PPC32_ASM_INLINE"
|
||||
else
|
||||
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_PPC32_ASM"
|
||||
fi
|
||||
|
||||
# Xilinx hardened crypto
|
||||
AC_ARG_ENABLE([xilinx],
|
||||
[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
|
|||
AM_CONDITIONAL([BUILD_ARM_32],[test "$ENABLED_ARM_32" = "yes" || test "$ENABLED_USERSETTINGS" = "yes"])
|
||||
AM_CONDITIONAL([BUILD_ARM_64],[test "$ENABLED_ARM_64" = "yes" || test "$ENABLED_USERSETTINGS" = "yes"])
|
||||
AM_CONDITIONAL([BUILD_RISCV_ASM],[test "x$ENABLED_RISCV_ASM" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_PPC32_ASM],[test "x$ENABLED_PPC32_ASM" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_PPC32_ASM_INLINE],[test "x$ENABLED_PPC32_ASM_INLINE" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_XILINX],[test "x$ENABLED_XILINX" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_AESNI],[test "x$ENABLED_AESNI" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_INTELASM],[test "x$ENABLED_INTELASM" = "xyes"])
|
||||
|
@ -11217,6 +11268,11 @@ echo " * ARM ASM: $ENABLED_ARMASM"
|
|||
echo " * ARM ASM SHA512/SHA3 Crypto $ENABLED_ARMASM_SHA3"
|
||||
echo " * ARM ASM SM3/SM4 Crypto $ENABLED_ARMASM_CRYPTO_SM4"
|
||||
echo " * RISC-V ASM $ENABLED_RISCV_ASM"
|
||||
if test "$ENABLED_PPC32_ASM_INLINE" = "yes"
|
||||
then
|
||||
ENABLED_PPC32_ASM="inline C"
|
||||
fi
|
||||
echo " * PPC32 ASM $ENABLED_PPC32_ASM"
|
||||
echo " * Write duplicate: $ENABLED_WRITEDUP"
|
||||
echo " * Xilinx Hardware Acc.: $ENABLED_XILINX"
|
||||
echo " * C89: $ENABLED_C89"
|
||||
|
|
|
@ -251,10 +251,19 @@ endif !BUILD_X86_ASM
|
|||
endif !BUILD_ARMASM
|
||||
endif !BUILD_ARMASM_NEON
|
||||
|
||||
|
||||
if BUILD_RISCV_ASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
|
||||
endif BUILD_RISCV_ASM
|
||||
|
||||
if BUILD_PPC32_ASM
|
||||
if BUILD_PPC32_ASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
|
||||
endif !BUILD_PPC32_ASM_INLINE
|
||||
endif BUILD_PPC32_ASM
|
||||
|
||||
if BUILD_SHA512
|
||||
if BUILD_RISCV_ASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha512.c
|
||||
|
@ -455,6 +464,14 @@ if BUILD_RISCV_ASM
|
|||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
|
||||
endif BUILD_RISCV_ASM
|
||||
|
||||
if BUILD_PPC32_ASM
|
||||
if BUILD_PPC32_ASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
|
||||
endif !BUILD_PPC32_ASM_INLINE
|
||||
endif BUILD_PPC32_ASM
|
||||
|
||||
if BUILD_SHA512
|
||||
if BUILD_RISCV_ASM
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha512.c
|
||||
|
@ -718,6 +735,14 @@ if BUILD_RISCV_ASM
|
|||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/riscv/riscv-64-sha256.c
|
||||
endif BUILD_RISCV_ASM
|
||||
|
||||
if BUILD_PPC32_ASM
|
||||
if BUILD_PPC32_ASM_INLINE
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm_c.c
|
||||
else
|
||||
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/port/ppc32/ppc32-sha256-asm.S
|
||||
endif !BUILD_PPC32_ASM_INLINE
|
||||
endif BUILD_PPC32_ASM
|
||||
|
||||
endif !BUILD_FIPS_CURRENT
|
||||
|
||||
if BUILD_AFALG
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -206,6 +206,8 @@ on the specific device platform.
|
|||
#endif
|
||||
#elif defined(FREESCALE_MMCAU_SHA)
|
||||
#define SHA256_UPDATE_REV_BYTES(ctx) 0 /* reverse not needed on update */
|
||||
#elif defined(WOLFSSL_PPC32_ASM)
|
||||
#define SHA256_UPDATE_REV_BYTES(ctx) 0
|
||||
#else
|
||||
#define SHA256_UPDATE_REV_BYTES(ctx) SHA256_REV_BYTES(ctx)
|
||||
#endif
|
||||
|
@ -1067,6 +1069,35 @@ static int InitSha256(wc_Sha256* sha256)
|
|||
#elif defined(WOLFSSL_RENESAS_RX64_HASH)
|
||||
|
||||
/* implemented in wolfcrypt/src/port/Renesas/renesas_rx64_hw_sha.c */
|
||||
#elif defined(WOLFSSL_PPC32_ASM)
|
||||
|
||||
extern void Transform_Sha256_Len(wc_Sha256* sha256, const byte* data,
|
||||
word32 len);
|
||||
|
||||
int wc_InitSha256_ex(wc_Sha256* sha256, void* heap, int devId)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (sha256 == NULL)
|
||||
return BAD_FUNC_ARG;
|
||||
ret = InitSha256(sha256);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
sha256->heap = heap;
|
||||
(void)devId;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int Transform_Sha256(wc_Sha256* sha256, const byte* data)
|
||||
{
|
||||
Transform_Sha256_Len(sha256, data, WC_SHA256_BLOCK_SIZE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define XTRANSFORM Transform_Sha256
|
||||
#define XTRANSFORM_LEN Transform_Sha256_Len
|
||||
|
||||
#else
|
||||
#define NEED_SOFT_SHA256
|
||||
|
|
Loading…
Reference in New Issue