From 2588fe366e7204b3a5e043ad82e3c19647380df0 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Thu, 5 Nov 2020 11:16:27 +1000 Subject: [PATCH] cpuid and SP ASM: ensure WOLFSSL_X86_64_BUILD is defined WOLFSSL_X86_64_BUILD is defined only when fast math is enabled. Define it when SP ASM is enabled and on an x86_64 host. Undo cpuid code being enabled when WOLFSSL_SP_ASM as it shouldn't for non-Intel CPUs. --- configure.ac | 5 +++++ wolfcrypt/src/cpuid.c | 3 +-- wolfssl/wolfcrypt/cpuid.h | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 383b4f8be..c6880386c 100644 --- a/configure.ac +++ b/configure.ac @@ -4883,11 +4883,16 @@ if test "$ENABLED_SP_ASM" = "yes"; then AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_X86_64_ASM" AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_X86_64_ASM" ENABLED_SP_X86_64_ASM=yes + if test "x$ENABLED_FASTMATH" = "xno" + then + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_X86_64_BUILD" + fi ;; *) AC_MSG_ERROR([ASM not available for CPU. Supported CPUs: x86_64, aarch64, arm]) ;; esac + fi if test "$ENABLED_SP_MATH" = "yes"; then diff --git a/wolfcrypt/src/cpuid.c b/wolfcrypt/src/cpuid.c index 22dc8fdd7..09b265122 100644 --- a/wolfcrypt/src/cpuid.c +++ b/wolfcrypt/src/cpuid.c @@ -29,8 +29,7 @@ #include #if (defined(WOLFSSL_X86_64_BUILD) || defined(USE_INTEL_SPEEDUP) || \ - defined(WOLFSSL_AESNI) || defined(WOLFSSL_SP_ASM)) && \ - !defined(WOLFSSL_NO_ASM) + defined(WOLFSSL_AESNI)) && !defined(WOLFSSL_NO_ASM) /* Each platform needs to query info type 1 from cpuid to see if aesni is * supported. Also, let's setup a macro for proper linkage w/o ABI conflicts */ diff --git a/wolfssl/wolfcrypt/cpuid.h b/wolfssl/wolfcrypt/cpuid.h index 484021bd7..64baedf5f 100644 --- a/wolfssl/wolfcrypt/cpuid.h +++ b/wolfssl/wolfcrypt/cpuid.h @@ -33,7 +33,8 @@ #endif #if defined(WOLFSSL_X86_64_BUILD) || defined(USE_INTEL_SPEEDUP) || \ - defined(WOLFSSL_AESNI) || defined(WOLFSSL_SP_ASM) + defined(WOLFSSL_AESNI) + #define CPUID_AVX1 0x0001 #define CPUID_AVX2 0x0002 #define CPUID_RDRAND 0x0004