Skip to content

Commit 0c640eb

Browse files
authored
Merge pull request #8081 from SparkiDev/arm32_thumb2_asm_fix
Thumb2 ASM: indicated by WOLFSSL_ARMASM_THUMB2
2 parents 49ad2d5 + 1ce90cc commit 0c640eb

40 files changed

Lines changed: 77 additions & 91 deletions

configure.ac

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,7 +3030,8 @@ then
30303030
;;
30313031
armv7m*)
30323032
# QEMU doesn't work with armv7-m
3033-
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv7-r -D__thumb__ -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=7"
3033+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ARMASM_THUMB2"
3034+
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv7-r -DWOLFSSL_ARMASM_THUMB2 -fomit-frame-pointer -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=7"
30343035
# Include options.h
30353036
AM_CCASFLAGS="$AM_CCASFLAGS -DEXTERNAL_OPTS_OPENVPN"
30363037
ENABLED_ARMASM_CRYPTO=no
@@ -8388,7 +8389,8 @@ if test "$ENABLED_SP_ASM" = "yes" && test "$ENABLED_SP" = "yes"; then
83888389
;;
83898390
*cortex* | *armv7m*)
83908391
if test "$ENABLED_ARMASM" = "no"; then
8391-
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv7-r -D__thumb__ -DWOLFSSL_ARM_ARCH=7"
8392+
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_ARMASM_THUMB2"
8393+
AM_CPPFLAGS="$AM_CPPFLAGS -march=armv7-r -DWOLFSSL_ARMASM_THUMB2 -DWOLFSSL_ARM_ARCH=7"
83928394
fi
83938395
AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM"
83948396
AM_CCASFLAGS="$AM_CCASFLAGS -DWOLFSSL_SP_ARM_CORTEX_M_ASM"

wolfcrypt/src/port/arm/armv8-32-aes-asm.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
#include <wolfssl/wolfcrypt/settings.h>
3232

3333
#ifdef WOLFSSL_ARMASM
34-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
35-
defined(__THUMB_INTERWORK__))
34+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3635
#ifndef WOLFSSL_ARMASM_INLINE
3736
#ifndef NO_AES
3837
#ifdef HAVE_AES_DECRYPT
@@ -5306,7 +5305,7 @@ L_AES_GCM_encrypt_end:
53065305
.size AES_GCM_encrypt,.-AES_GCM_encrypt
53075306
#endif /* HAVE_AESGCM */
53085307
#endif /* !NO_AES */
5309-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
5308+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
53105309
#endif /* WOLFSSL_ARMASM */
53115310

53125311
#if defined(__linux__) && defined(__ELF__)

wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
#include <wolfssl/wolfcrypt/error-crypt.h>
3333

3434
#ifdef WOLFSSL_ARMASM
35-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
36-
defined(__THUMB_INTERWORK__))
35+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3736
#include <stdint.h>
3837
#ifdef HAVE_CONFIG_H
3938
#include <config.h>
@@ -4850,7 +4849,7 @@ void AES_GCM_encrypt(const unsigned char* in_p, unsigned char* out_p,
48504849

48514850
#endif /* HAVE_AESGCM */
48524851
#endif /* !NO_AES */
4853-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
4852+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
48544853
#endif /* WOLFSSL_ARMASM */
48554854

48564855
#endif /* WOLFSSL_ARMASM_INLINE */

wolfcrypt/src/port/arm/armv8-32-chacha-asm.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
#include <wolfssl/wolfcrypt/settings.h>
3232

3333
#ifdef WOLFSSL_ARMASM
34-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
35-
defined(__THUMB_INTERWORK__))
34+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3635
#ifndef WOLFSSL_ARMASM_INLINE
3736
#ifdef HAVE_CHACHA
3837
.text
@@ -515,7 +514,7 @@ L_chacha_arm32_over_done:
515514
.size wc_chacha_use_over,.-wc_chacha_use_over
516515
#endif /* WOLFSSL_ARMASM_NO_NEON */
517516
#endif /* HAVE_CHACHA */
518-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
517+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
519518
#endif /* WOLFSSL_ARMASM */
520519

521520
#if defined(__linux__) && defined(__ELF__)

wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
#include <wolfssl/wolfcrypt/error-crypt.h>
3333

3434
#ifdef WOLFSSL_ARMASM
35-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
36-
defined(__THUMB_INTERWORK__))
35+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3736
#include <stdint.h>
3837
#ifdef HAVE_CONFIG_H
3938
#include <config.h>
@@ -566,7 +565,7 @@ void wc_chacha_use_over(byte* over_p, byte* output_p, const byte* input_p,
566565

567566
#endif /* WOLFSSL_ARMASM_NO_NEON */
568567
#endif /* HAVE_CHACHA */
569-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
568+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
570569
#endif /* WOLFSSL_ARMASM */
571570

572571
#endif /* WOLFSSL_ARMASM_INLINE */

wolfcrypt/src/port/arm/armv8-32-curve25519.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
#include <wolfssl/wolfcrypt/settings.h>
3232

3333
#ifdef WOLFSSL_ARMASM
34-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
35-
defined(__THUMB_INTERWORK__))
34+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3635
#ifndef WOLFSSL_ARMASM_INLINE
3736
#if defined(HAVE_CURVE25519) || defined(HAVE_ED25519)
3837
#if !defined(CURVE25519_SMALL) || !defined(ED25519_SMALL)
@@ -9181,7 +9180,7 @@ sc_muladd:
91819180

91829181
#endif /* !CURVE25519_SMALL || !ED25519_SMALL */
91839182
#endif /* HAVE_CURVE25519 || HAVE_ED25519 */
9184-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
9183+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
91859184
#endif /* WOLFSSL_ARMASM */
91869185

91879186
#if defined(__linux__) && defined(__ELF__)

wolfcrypt/src/port/arm/armv8-32-curve25519_c.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
#include <wolfssl/wolfcrypt/error-crypt.h>
3333

3434
#ifdef WOLFSSL_ARMASM
35-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
36-
defined(__THUMB_INTERWORK__))
35+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3736
#include <stdint.h>
3837
#ifdef HAVE_CONFIG_H
3938
#include <config.h>
@@ -9426,7 +9425,7 @@ void sc_muladd(byte* s_p, const byte* a_p, const byte* b_p, const byte* c_p)
94269425

94279426
#endif /* !CURVE25519_SMALL || !ED25519_SMALL */
94289427
#endif /* HAVE_CURVE25519 || HAVE_ED25519 */
9429-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
9428+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
94309429
#endif /* WOLFSSL_ARMASM */
94319430

94329431
#endif /* WOLFSSL_ARMASM_INLINE */

wolfcrypt/src/port/arm/armv8-32-kyber-asm.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
#include <wolfssl/wolfcrypt/settings.h>
3232

3333
#ifdef WOLFSSL_ARMASM
34-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
35-
defined(__THUMB_INTERWORK__))
34+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3635
#ifndef WOLFSSL_ARMASM_INLINE
3736
#ifdef WOLFSSL_WC_KYBER
3837
.text
@@ -9434,7 +9433,7 @@ L_kyber_arm32_rej_uniform_done:
94349433
pop {r4, r5, r6, r7, r8, pc}
94359434
.size kyber_arm32_rej_uniform,.-kyber_arm32_rej_uniform
94369435
#endif /* WOLFSSL_WC_KYBER */
9437-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
9436+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
94389437
#endif /* WOLFSSL_ARMASM */
94399438

94409439
#if defined(__linux__) && defined(__ELF__)

wolfcrypt/src/port/arm/armv8-32-kyber-asm_c.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@
3232
#include <wolfssl/wolfcrypt/error-crypt.h>
3333

3434
#ifdef WOLFSSL_ARMASM
35-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
36-
defined(__THUMB_INTERWORK__))
35+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3736
#include <stdint.h>
3837
#ifdef HAVE_CONFIG_H
3938
#include <config.h>
@@ -9229,7 +9228,7 @@ unsigned int kyber_arm32_rej_uniform(sword16* p_p, unsigned int len_p,
92299228
}
92309229

92319230
#endif /* WOLFSSL_WC_KYBER */
9232-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
9231+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
92339232
#endif /* WOLFSSL_ARMASM */
92349233

92359234
#endif /* WOLFSSL_ARMASM_INLINE */

wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131
#include <wolfssl/wolfcrypt/settings.h>
3232

3333
#ifdef WOLFSSL_ARMASM
34-
#if !defined(__aarch64__) && defined(__arm__) && (!defined(__thumb__) || \
35-
defined(__THUMB_INTERWORK__))
34+
#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
3635
#ifndef WOLFSSL_ARMASM_INLINE
3736
#ifdef HAVE_POLY1305
3837
.text
@@ -349,7 +348,7 @@ poly1305_final:
349348
pop {r4, r5, r6, r7, r8, r9, pc}
350349
.size poly1305_final,.-poly1305_final
351350
#endif /* HAVE_POLY1305 */
352-
#endif /* !__aarch64__ && __arm__ && (!__thumb__ || __THUMB_INTERWORK__) */
351+
#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
353352
#endif /* WOLFSSL_ARMASM */
354353

355354
#if defined(__linux__) && defined(__ELF__)

0 commit comments

Comments
 (0)