mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 02:37:28 +02:00
ARM: identify ARM CPU for Thumb and Cortex
Better detailed check of CPU architecture for 32-bit byte reversal asm
This commit is contained in:
19
configure.ac
19
configure.ac
@ -4897,12 +4897,12 @@ if test "$ENABLED_SP_ASM" = "yes"; then
|
|||||||
;;
|
;;
|
||||||
*arm*)
|
*arm*)
|
||||||
if test $host_alias = "thumb"; then
|
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"
|
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_ARM_THUMB_ASM"
|
||||||
ENABLED_SP_ARM_THUMB_ASM=yes
|
ENABLED_SP_ARM_THUMB_ASM=yes
|
||||||
else
|
else
|
||||||
if test $host_alias = "cortex"; then
|
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"
|
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM"
|
||||||
ENABLED_SP_ARM_CORTEX_ASM=yes
|
ENABLED_SP_ARM_CORTEX_ASM=yes
|
||||||
else
|
else
|
||||||
@ -5008,10 +5008,10 @@ if test "$ENABLED_SP_MATH_ALL" = "yes"; then
|
|||||||
;;
|
;;
|
||||||
*arm*)
|
*arm*)
|
||||||
if test $host_alias = "thumb"; then
|
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
|
else
|
||||||
if test $host_alias = "cortex"; then
|
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
|
else
|
||||||
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM32"
|
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM32"
|
||||||
fi
|
fi
|
||||||
@ -5474,6 +5474,17 @@ do
|
|||||||
done
|
done
|
||||||
AM_CFLAGS=$NEW_AM_CFLAGS])
|
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 #
|
# Check for build-type conflicts #
|
||||||
|
@ -127,16 +127,18 @@ WC_STATIC WC_INLINE word32 ByteReverseWord32(word32 value)
|
|||||||
#elif defined(WOLF_ALLOW_BUILTIN) && \
|
#elif defined(WOLF_ALLOW_BUILTIN) && \
|
||||||
defined(__GNUC_PREREQ) && __GNUC_PREREQ(4, 3)
|
defined(__GNUC_PREREQ) && __GNUC_PREREQ(4, 3)
|
||||||
return (word32)__builtin_bswap32(value);
|
return (word32)__builtin_bswap32(value);
|
||||||
#elif defined(__arm__) && defined(__GNUC__)
|
#elif defined(WOLFSSL_BYTESWAP32_ASM) && defined(__GNUC__) && \
|
||||||
|
defined(__aarch64__)
|
||||||
__asm__ volatile (
|
__asm__ volatile (
|
||||||
"REV %0, %0 \n"
|
"REV32 %0, %0 \n"
|
||||||
: "+r" (value)
|
: "+r" (value)
|
||||||
:
|
:
|
||||||
);
|
);
|
||||||
return value;
|
return value;
|
||||||
#elif defined(__aarch64__) && defined(__GNUC__)
|
#elif defined(WOLFSSL_BYTESWAP32_ASM) && defined(__GNUC__) && \
|
||||||
|
(defined(__thumb__) || defined(__arm__))
|
||||||
__asm__ volatile (
|
__asm__ volatile (
|
||||||
"REV32 %0, %0 \n"
|
"REV %0, %0 \n"
|
||||||
: "+r" (value)
|
: "+r" (value)
|
||||||
:
|
:
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user