From 5c5bd31c3965d9efd7f6b032501e61fdaab924f1 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Wed, 2 Oct 2024 13:58:17 +0200 Subject: [PATCH] Allow armv8-asm on ARMv7-A with -mthumb-interwork ARMv7-A (e.g. Cortex-A5) support calls between ARM and Thumb mode. When this is enabled (via `-mthumb -mthumb-interwork`, some functions in the amrv8- ARMASM port are guarded out via `&& !defined(__thumb__)` statement. --- wolfcrypt/src/port/arm/armv8-32-aes-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-chacha-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-curve25519.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-curve25519_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-sha256-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-sha3-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c | 8 ++++---- wolfcrypt/src/port/arm/armv8-32-sha512-asm.S | 4 ++-- wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.c | 8 ++++---- 14 files changed, 42 insertions(+), 42 deletions(-) diff --git a/wolfcrypt/src/port/arm/armv8-32-aes-asm.S b/wolfcrypt/src/port/arm/armv8-32-aes-asm.S index 553acadc29..39f91dd400 100644 --- a/wolfcrypt/src/port/arm/armv8-32-aes-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-aes-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifndef NO_AES #ifdef HAVE_AES_DECRYPT @@ -5305,7 +5305,7 @@ L_AES_GCM_encrypt_end: .size AES_GCM_encrypt,.-AES_GCM_encrypt #endif /* HAVE_AESGCM */ #endif /* !NO_AES */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c index c21fbea524..1eb5f7d8c2 100644 --- a/wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-aes-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -4852,9 +4852,9 @@ void AES_GCM_encrypt(const unsigned char* in_p, unsigned char* out_p, #endif /* HAVE_AESGCM */ #endif /* !NO_AES */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-chacha-asm.S b/wolfcrypt/src/port/arm/armv8-32-chacha-asm.S index b19bf515c2..947ef43049 100644 --- a/wolfcrypt/src/port/arm/armv8-32-chacha-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-chacha-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifdef HAVE_CHACHA .text @@ -514,7 +514,7 @@ L_chacha_arm32_over_done: .size wc_chacha_use_over,.-wc_chacha_use_over #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* HAVE_CHACHA */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c index 201cf2ee31..05a9a89c69 100644 --- a/wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -568,9 +568,9 @@ void wc_chacha_use_over(byte* over_p, byte* output_p, const byte* input_p, #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* HAVE_CHACHA */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-curve25519.S b/wolfcrypt/src/port/arm/armv8-32-curve25519.S index bf8daeec0e..6a4de45903 100644 --- a/wolfcrypt/src/port/arm/armv8-32-curve25519.S +++ b/wolfcrypt/src/port/arm/armv8-32-curve25519.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #if defined(HAVE_CURVE25519) || defined(HAVE_ED25519) #if !defined(CURVE25519_SMALL) || !defined(ED25519_SMALL) @@ -8772,7 +8772,7 @@ sc_muladd: #endif /* !CURVE25519_SMALL || !ED25519_SMALL */ #endif /* HAVE_CURVE25519 || HAVE_ED25519 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-curve25519_c.c b/wolfcrypt/src/port/arm/armv8-32-curve25519_c.c index d00916ec66..5dc3b9fef1 100644 --- a/wolfcrypt/src/port/arm/armv8-32-curve25519_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-curve25519_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -9020,9 +9020,9 @@ void sc_muladd(byte* s_p, const byte* a_p, const byte* b_p, const byte* c_p) #endif /* !CURVE25519_SMALL || !ED25519_SMALL */ #endif /* HAVE_CURVE25519 || HAVE_ED25519 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S b/wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S index d7225828fa..906e1545aa 100644 --- a/wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-poly1305-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifdef HAVE_POLY1305 .text @@ -348,7 +348,7 @@ poly1305_final: pop {r4, r5, r6, r7, r8, r9, pc} .size poly1305_final,.-poly1305_final #endif /* HAVE_POLY1305 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c index da604101b7..a61ef1e1c3 100644 --- a/wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-poly1305-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -387,9 +387,9 @@ void poly1305_final(Poly1305* ctx_p, byte* mac_p) } #endif /* HAVE_POLY1305 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-sha256-asm.S b/wolfcrypt/src/port/arm/armv8-32-sha256-asm.S index bcbf3273a6..9743d709b6 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha256-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-sha256-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifndef NO_SHA256 #ifdef WOLFSSL_ARMASM_NO_NEON @@ -2866,7 +2866,7 @@ L_SHA256_transform_neon_len_start: .size Transform_Sha256_Len,.-Transform_Sha256_Len #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* !NO_SHA256 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.c index 0a2e15e9be..c34bd29439 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -2810,9 +2810,9 @@ void Transform_Sha256_Len(wc_Sha256* sha256_p, const byte* data_p, word32 len_p) #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* !NO_SHA256 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-sha3-asm.S b/wolfcrypt/src/port/arm/armv8-32-sha3-asm.S index 7d2c60a89e..088f612c92 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha3-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-sha3-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_SHA3 #ifndef WOLFSSL_ARMASM_NO_NEON @@ -2394,7 +2394,7 @@ L_sha3_arm32_begin: .size BlockSha3,.-BlockSha3 #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* WOLFSSL_SHA3 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c index 832aac1cb4..2362d8fd75 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -2355,9 +2355,9 @@ void BlockSha3(word64* state_p) #endif /* WOLFSSL_ARMASM_NO_NEON */ #endif /* WOLFSSL_SHA3 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */ diff --git a/wolfcrypt/src/port/arm/armv8-32-sha512-asm.S b/wolfcrypt/src/port/arm/armv8-32-sha512-asm.S index 1df40cfc86..149820c795 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha512-asm.S +++ b/wolfcrypt/src/port/arm/armv8-32-sha512-asm.S @@ -31,7 +31,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifndef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_SHA512 #ifdef WOLFSSL_ARMASM_NO_NEON @@ -9367,7 +9367,7 @@ L_SHA512_transform_neon_len_start: .size Transform_Sha512_Len,.-Transform_Sha512_Len #endif /* !WOLFSSL_ARMASM_NO_NEON */ #endif /* WOLFSSL_SHA512 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ #if defined(__linux__) && defined(__ELF__) diff --git a/wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.c b/wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.c index eaaa6c7e87..2fdf520276 100644 --- a/wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.c +++ b/wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.c @@ -32,7 +32,7 @@ #include #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #include #ifdef HAVE_CONFIG_H #include @@ -42,7 +42,7 @@ #ifdef WOLFSSL_ARMASM_INLINE #ifdef WOLFSSL_ARMASM -#if !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) +#if !defined(__aarch64__) && defined(__arm__) #ifdef __IAR_SYSTEMS_ICC__ #define __asm__ asm @@ -9167,9 +9167,9 @@ void Transform_Sha512_Len(wc_Sha512* sha512_p, const byte* data_p, word32 len_p) #endif /* !WOLFSSL_ARMASM_NO_NEON */ #endif /* WOLFSSL_SHA512 */ -#endif /* !__aarch64__ && __arm__ && !__thumb__ */ +#endif /* !__aarch64__ && __arm__ */ #endif /* WOLFSSL_ARMASM */ -#endif /* !defined(__aarch64__) && defined(__arm__) && !defined(__thumb__) */ +#endif /* !defined(__aarch64__) && defined(__arm__) */ #endif /* WOLFSSL_ARMASM */ #endif /* WOLFSSL_ARMASM_INLINE */