@@ -188,7 +188,8 @@ ifeq ($(ARCH),ARM)
188188ifeq ($(CORTEX_A5 ) ,1)
189189 FPU=-mfpu =vfp4-d16
190190 CFLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -static -z noexecstack
191- LDLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -mtune=cortex-a5 -static -z noexecstack -Ttext 0x300000
191+ LDLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -mtune=cortex-a5 -static \
192+ -z noexecstack -Ttext 0x300000
192193 # Cortex-A uses boot_arm32.o
193194 OBJS+ =src/boot_arm32.o src/boot_arm32_start.o
194195 ifeq ($(NO_ASM),1)
@@ -198,11 +199,37 @@ ifeq ($(CORTEX_A5),1)
198199 OBJS+ =./lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha256.o
199200 OBJS+ =./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm.o
200201 OBJS+ =./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.o
201- CFLAGS+ =-DWOLFSSL_SP_ARM32_ASM -DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO -DWOLFSSL_ARM_ARCH=7 -DWOLFSSL_ARMASM_INLINE -DWOLFSSL_ARMASM_NO_NEON
202+ CFLAGS+ =-DWOLFSSL_SP_ARM32_ASM -DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO \
203+ -DWOLFSSL_ARM_ARCH=7 -DWOLFSSL_ARMASM_INLINE -DWOLFSSL_ARMASM_NO_NEON
202204 endif
203205else
204206 # All others use boot_arm.o
205207 OBJS+ =src/boot_arm.o
208+ ifneq ($(NO_ARM_ASM),1)
209+ CORTEXM_ARM_EXTRA_OBJS = \
210+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-aes.o \
211+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-chacha.o \
212+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha256.o \
213+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-sha512.o \
214+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-aes-asm.o \
215+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-aes-asm_c.o \
216+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm.o \
217+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha256-asm_c.o \
218+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha512-asm.o \
219+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha512-asm_c.o \
220+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha3-asm.o \
221+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-sha3-asm_c.o \
222+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-chacha-asm.o \
223+ ./lib/wolfssl/wolfcrypt/src/port/arm/armv8-32-chacha-asm_c.o
224+
225+
226+ CORTEXM_ARM_THUMB_EXTRA_OBJS = \
227+ ./lib/wolfssl/wolfcrypt/src/port/arm/thumb2-sha256-asm.o \
228+ ./lib/wolfssl/wolfcrypt/src/port/arm/thumb2-sha256-asm_c.o
229+
230+ CORTEXM_ARM_EXTRA_CFLAGS+ =-DWOLFSSL_ARMASM -DWOLFSSL_ARMASM_NO_HW_CRYPTO \
231+ -DWOLFSSL_ARMASM_INLINE -DWOLFSSL_ARMASM_NO_NEON
232+ endif
206233 ifeq ($(CORTEX_M33),1)
207234 CFLAGS+=-mcpu =cortex-m33 -DCORTEX_M33
208235 LDFLAGS+=-mcpu =cortex-m33
@@ -212,28 +239,25 @@ else
212239 endif
213240 CFLAGS+ =-mcmse
214241 ifeq ($(WOLFCRYPT_TZ),1)
242+ CORTEXM_ARM_EXTRA_OBJS =
243+ CORTEXM_ARM_EXTRA_CFLAGS =
215244 SECURE_OBJS+ =./src/wc_callable.o
216245 SECURE_OBJS+ =./lib/wolfssl/wolfcrypt/src/random.o
217246 CFLAGS+ =-DWOLFCRYPT_SECURE_MODE
218247 SECURE_LDFLAGS+ =-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
219248 endif
220249 endif # TZEN=1
221- ifeq ($(NO_ASM),1)
222250 ifeq ($(SPMATH),1)
223251 ifeq ($(NO_ASM),1)
224252 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
225253 else
226254 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
227255 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
256+ CFLAGS+ =$(CORTEXM_ARM_EXTRA_CFLAGS ) -DWOLFSSL_ARM_ARCH=8
257+ OBJS+ =$(CORTEXM_ARM_EXTRA_OBJS )
228258 endif
229259 endif
230260 else
231- ifeq ($(SPMATH),1)
232- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
233- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
234- endif
235- endif
236- else
237261 ifeq ($(CORTEX_M7),1)
238262 CFLAGS+=-mcpu =cortex-m7
239263 LDFLAGS+=-mcpu =cortex-m7
@@ -243,10 +267,12 @@ else
243267 else
244268 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
245269 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
270+ CFLAGS+ =$(CORTEXM_ARM_EXTRA_CFLAGS ) -DWOLFSSL_ARM_ARCH=7
271+ OBJS+ =$(CORTEXM_ARM_EXTRA_OBJS )
246272 endif
247- endif
273+ endif
248274 else
249- ifeq ($(CORTEX_M0),1)
275+ ifeq ($(CORTEX_M0),1)
250276 CFLAGS+=-mcpu =cortex-m0
251277 LDFLAGS+=-mcpu =cortex-m0
252278 ifeq ($(SPMATH),1)
255281 else
256282 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_THUMB_ASM
257283 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_armthumb.o
284+ # TODO: integrate thumb2-asm
285+ # CFLAGS+=$(CORTEXM_ARM_EXTRA_CFLAGS) -DWOLFSSL_ARM_ARCH=6
286+ # OBJS+=$(CORTEXM_ARM_THUMB_EXTRA_OBJS)
258287 endif
259288 endif
260289 else
269298 ifeq ($(SPMATH),1)
270299 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -DWOLFSSL_SP_NO_UMAAL
271300 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
301+ CFLAGS+ =$(CORTEXM_ARM_EXTRA_CFLAGS ) -DWOLFSSL_ARM_ARCH=7
302+ OBJS+ =$(CORTEXM_ARM_EXTRA_OBJS )
272303 endif
273304 endif
274305 else
284315 ifeq ($(SPMATH ) ,1)
285316 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
286317 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
318+ CFLAGS+ =$(CORTEXM_ARM_EXTRA_CFLAGS ) -DWOLFSSL_ARM_ARCH=7
319+ OBJS+ =$(CORTEXM_ARM_EXTRA_OBJS )
287320 endif
288321 endif
289322 endif
0 commit comments