diff --git a/configure.ac b/configure.ac index cce849f4a..76a27439f 100644 --- a/configure.ac +++ b/configure.ac @@ -4917,12 +4917,12 @@ if test "$ENABLED_SP_ASM" = "yes"; then ;; *arm*) if test $host_alias = "thumb"; then - AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_THUMB_ASM -mthumb -march=armv6" + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_THUMB_ASM" AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_ARM_THUMB_ASM" ENABLED_SP_ARM_THUMB_ASM=yes else if test $host_alias = "cortex"; then - AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM -mcpu=cortex-r5" + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM" AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM" ENABLED_SP_ARM_CORTEX_ASM=yes else @@ -5028,10 +5028,10 @@ if test "$ENABLED_SP_MATH_ALL" = "yes"; then ;; *arm*) if test $host_alias = "thumb"; then - AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_THUMB -mthumb -march=armv6" + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_THUMB" else if test $host_alias = "cortex"; then - AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_CORTEX_M -mcpu=cortex-m4" + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_CORTEX_M" else AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM32" fi @@ -5494,6 +5494,17 @@ do done AM_CFLAGS=$NEW_AM_CFLAGS]) +case $host_cpu in + *arm*) + if test $host_alias = "thumb"; then + AM_CFLAGS="$AM_CFLAGS -mthumb -march=armv6" + else + if test $host_alias = "cortex"; then + AM_CFLAGS="$AM_CFLAGS -mcpu=cortex-r5" + fi + fi + ;; +esac ################################################################################ # Check for build-type conflicts # diff --git a/wolfcrypt/src/misc.c b/wolfcrypt/src/misc.c index 90679197f..99119dc93 100644 --- a/wolfcrypt/src/misc.c +++ b/wolfcrypt/src/misc.c @@ -127,16 +127,18 @@ WC_STATIC WC_INLINE word32 ByteReverseWord32(word32 value) #elif defined(WOLF_ALLOW_BUILTIN) && \ defined(__GNUC_PREREQ) && __GNUC_PREREQ(4, 3) return (word32)__builtin_bswap32(value); -#elif defined(__arm__) && defined(__GNUC__) +#elif defined(WOLFSSL_BYTESWAP32_ASM) && defined(__GNUC__) && \ + defined(__aarch64__) __asm__ volatile ( - "REV %0, %0 \n" + "REV32 %0, %0 \n" : "+r" (value) : ); return value; -#elif defined(__aarch64__) && defined(__GNUC__) +#elif defined(WOLFSSL_BYTESWAP32_ASM) && defined(__GNUC__) && \ + (defined(__thumb__) || defined(__arm__)) __asm__ volatile ( - "REV %w0, %w0 \n" + "REV %0, %0 \n" : "+r" (value) : );