@@ -70,7 +70,6 @@ ifeq ($(ARCH),ARM)
7070 CROSS_COMPILE? =arm-none-eabi-
7171 CFLAGS+ =-mthumb -mlittle-endian -mthumb-interwork -DARCH_ARM
7272 LDFLAGS+ =-mthumb -mlittle-endian -mthumb-interwork
73- OBJS+ =src/boot_arm.o
7473
7574 # # Target specific configuration
7675 ifeq ($(TARGET),samr21)
@@ -176,88 +175,102 @@ ifeq ($(ARCH),ARM)
176175 SPI_TARGET =stm32
177176 endif
178177
179- # # Cortex-M CPU
180- ifeq ($(CORTEX_M33 ) ,1)
181- CFLAGS+=-mcpu =cortex-m33 -DCORTEX_M33
182- LDFLAGS+=-mcpu =cortex-m33
183- ifeq ($(TZEN),1)
184- OBJS+ =hal/stm32_tz.o
185- CFLAGS+ =-mcmse
186- ifeq ($(WOLFCRYPT_TZ),1)
187- SECURE_OBJS+ =./src/wc_callable.o
188- SECURE_OBJS+ =./lib/wolfssl/wolfcrypt/src/random.o
189- CFLAGS+ =-DWOLFCRYPT_SECURE_MODE
190- SECURE_LDFLAGS+ =-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
191- endif
192- endif # TZEN=1
193- ifeq ($(NO_ASM),1)
194- ifeq ($(SPMATH),1)
195- ifeq ($(NO_ASM),1)
196- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
197- else
198- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
199- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
200- endif
201- endif
202- else
203- ifeq ($(SPMATH),1)
204- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
205- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
206- endif
178+ ifeq ($(TARGET),sama5d3)
179+ CORTEX_A5 =1
207180 endif
181+
182+ # # Cortex CPU
183+
184+ ifeq ($(CORTEX_A5 ) ,1)
185+ CFLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -mfpu=vfpv4-d16 -static -z noexecstack
186+ LDLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -mtune=cortex-a5 -mfpu=vfpv4-d16 -static -z noexecstack -Ttext 0x300000
187+ # Cortex-A uses boot_arm32.o
188+ OBJS+ =src/boot_arm32.o src/boot_arm32_start.o
189+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
208190else
209- ifeq ($(CORTEX_M7),1)
210- CFLAGS+=-mcpu =cortex-m7
211- LDFLAGS+=-mcpu =cortex-m7
212- ifeq ($(SPMATH),1)
213- ifeq ($(NO_ASM),1)
214- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
215- else
191+ # All others use boot_arm.o
192+ OBJS+ =src/boot_arm.o
193+ ifeq ($(CORTEX_M33),1)
194+ CFLAGS+=-mcpu =cortex-m33 -DCORTEX_M33
195+ LDFLAGS+=-mcpu =cortex-m33
196+ ifeq ($(TZEN),1)
197+ OBJS+ =hal/stm32_tz.o
198+ CFLAGS+ =-mcmse
199+ ifeq ($(WOLFCRYPT_TZ),1)
200+ SECURE_OBJS+ =./src/wc_callable.o
201+ SECURE_OBJS+ =./lib/wolfssl/wolfcrypt/src/random.o
202+ CFLAGS+ =-DWOLFCRYPT_SECURE_MODE
203+ SECURE_LDFLAGS+ =-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
204+ endif
205+ endif # TZEN=1
206+ ifeq ($(NO_ASM),1)
207+ ifeq ($(SPMATH),1)
208+ ifeq ($(NO_ASM),1)
209+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
210+ else
211+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
212+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
213+ endif
214+ endif
215+ else
216+ ifeq ($(SPMATH),1)
216217 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
217218 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
218219 endif
219220 endif
220221 else
221- ifeq ($(CORTEX_M0 ),1)
222- CFLAGS+=-mcpu =cortex-m0
223- LDFLAGS+=-mcpu =cortex-m0
222+ ifeq ($(CORTEX_M7 ),1)
223+ CFLAGS+=-mcpu =cortex-m7
224+ LDFLAGS+=-mcpu =cortex-m7
224225 ifeq ($(SPMATH),1)
225226 ifeq ($(NO_ASM),1)
226227 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
227228 else
228- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_THUMB_ASM
229- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_armthumb .o
229+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
230+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm .o
230231 endif
231232 endif
232233 else
233- ifeq ($(CORTEX_M3),1)
234-
235- CFLAGS+=-mcpu =cortex-m3
236- LDFLAGS+=-mcpu =cortex-m3
234+ ifeq ($(CORTEX_M0),1)
235+ CFLAGS+=-mcpu =cortex-m0
236+ LDFLAGS+=-mcpu =cortex-m0
237+ ifeq ($(SPMATH),1)
238+ ifeq ($(NO_ASM),1)
239+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
240+ else
241+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_THUMB_ASM
242+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_armthumb.o
243+ endif
244+ endif
245+ else
246+ ifeq ($(CORTEX_M3),1)
247+ CFLAGS+=-mcpu =cortex-m3
248+ LDFLAGS+=-mcpu =cortex-m3
249+ ifeq ($(NO_ASM),1)
250+ ifeq ($(SPMATH),1)
251+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
252+ endif
253+ else
254+ ifeq ($(SPMATH),1)
255+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -DWOLFSSL_SP_NO_UMAAL
256+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
257+ endif
258+ endif
259+ else
260+ # default Cortex M4
261+ CFLAGS+=-mcpu =cortex-m4
262+ LDFLAGS+=-mcpu =cortex-m4
237263 ifeq ($(NO_ASM),1)
238264 ifeq ($(SPMATH),1)
239265 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
240266 endif
241267 else
268+ CFLAGS+ =-fomit-frame-pointer # required with debug builds only
242269 ifeq ($(SPMATH ) ,1)
243- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -DWOLFSSL_SP_NO_UMAAL
270+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
244271 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
245272 endif
246273 endif
247- else
248- # default Cortex M4
249- CFLAGS+=-mcpu =cortex-m4
250- LDFLAGS+=-mcpu =cortex-m4
251- ifeq ($(NO_ASM),1)
252- ifeq ($(SPMATH),1)
253- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
254- endif
255- else
256- CFLAGS+ =-fomit-frame-pointer # required with debug builds only
257- ifeq ($(SPMATH ) ,1)
258- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
259- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
260- endif
261274 endif
262275 endif
263276 endif
0 commit comments