@@ -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,111 @@ 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
178+ ifeq ($(TARGET),sama5d3)
179+ CORTEX_A5 =1
180+ UPDATE_OBJS: =src/update_ram.o
181+ CFLAGS+ =-DWOLFBOOT_DUALBOOT -DEXT_FLASH -DNAND_FLASH -fno-builtin -ffreestanding
182+ # CFLAGS+=-DWOLFBOOT_USE_STDLIBC
183+ endif
184+
185+ # # Cortex CPU
186+
187+ ifeq ($(CORTEX_A5 ) ,1)
188+ FPU=-mfpu =vfp4-d16
189+ CFLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -static -z noexecstack
190+ LDLAGS+=-mcpu =cortex-a5 -mtune=cortex-a5 -mtune=cortex-a5 -static -z noexecstack -Ttext 0x300000
191+ # Cortex-A uses boot_arm32.o
192+ OBJS+ =src/boot_arm32.o src/boot_arm32_start.o
193193 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
194+ MATH_OBJS+ =./lib/wolfssl/wolfcrypt/src/sp_c32.o
202195 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
196+ MATH_OBJS+ =./lib/wolfssl/wolfcrypt/src/sp_arm32.o
197+ CFLAGS+ =-DWOLFSSL_SP_ARM32_ASM
207198 endif
208199else
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
200+ # All others use boot_arm.o
201+ OBJS+ =src/boot_arm.o
202+ ifeq ($(CORTEX_M33),1)
203+ CFLAGS+=-mcpu =cortex-m33 -DCORTEX_M33
204+ LDFLAGS+=-mcpu =cortex-m33
205+ ifeq ($(TZEN),1)
206+ OBJS+ =hal/stm32_tz.o
207+ CFLAGS+ =-mcmse
208+ ifeq ($(WOLFCRYPT_TZ),1)
209+ SECURE_OBJS+ =./src/wc_callable.o
210+ SECURE_OBJS+ =./lib/wolfssl/wolfcrypt/src/random.o
211+ CFLAGS+ =-DWOLFCRYPT_SECURE_MODE
212+ SECURE_LDFLAGS+ =-Wl,--cmse-implib -Wl,--out-implib=./src/wc_secure_calls.o
213+ endif
214+ endif # TZEN=1
215+ ifeq ($(NO_ASM),1)
216+ ifeq ($(SPMATH),1)
217+ ifeq ($(NO_ASM),1)
218+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
219+ else
220+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
221+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
222+ endif
223+ endif
224+ else
225+ ifeq ($(SPMATH),1)
216226 CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
217227 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
218228 endif
219229 endif
220230 else
221- ifeq ($(CORTEX_M0 ),1)
222- CFLAGS+=-mcpu =cortex-m0
223- LDFLAGS+=-mcpu =cortex-m0
231+ ifeq ($(CORTEX_M7 ),1)
232+ CFLAGS+=-mcpu =cortex-m7
233+ LDFLAGS+=-mcpu =cortex-m7
224234 ifeq ($(SPMATH),1)
225235 ifeq ($(NO_ASM),1)
226236 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
227237 else
228- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_THUMB_ASM
229- MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_armthumb .o
238+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
239+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm .o
230240 endif
231241 endif
232242 else
233- ifeq ($(CORTEX_M3),1)
234-
235- CFLAGS+=-mcpu =cortex-m3
236- LDFLAGS+=-mcpu =cortex-m3
243+ ifeq ($(CORTEX_M0),1)
244+ CFLAGS+=-mcpu =cortex-m0
245+ LDFLAGS+=-mcpu =cortex-m0
246+ ifeq ($(SPMATH),1)
247+ ifeq ($(NO_ASM),1)
248+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
249+ else
250+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_THUMB_ASM
251+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_armthumb.o
252+ endif
253+ endif
254+ else
255+ ifeq ($(CORTEX_M3),1)
256+ CFLAGS+=-mcpu =cortex-m3
257+ LDFLAGS+=-mcpu =cortex-m3
258+ ifeq ($(NO_ASM),1)
259+ ifeq ($(SPMATH),1)
260+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
261+ endif
262+ else
263+ ifeq ($(SPMATH),1)
264+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -DWOLFSSL_SP_NO_UMAAL
265+ MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
266+ endif
267+ endif
268+ else
269+ # default Cortex M4
270+ CFLAGS+=-mcpu =cortex-m4
271+ LDFLAGS+=-mcpu =cortex-m4
237272 ifeq ($(NO_ASM),1)
238273 ifeq ($(SPMATH),1)
239274 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_c32.o
240275 endif
241276 else
277+ CFLAGS+ =-fomit-frame-pointer # required with debug builds only
242278 ifeq ($(SPMATH ) ,1)
243- CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM -DWOLFSSL_SP_NO_UMAAL
279+ CFLAGS+ =-DWOLFSSL_SP_ASM -DWOLFSSL_SP_ARM_CORTEX_M_ASM
244280 MATH_OBJS += ./lib/wolfssl/wolfcrypt/src/sp_cortexm.o
245281 endif
246282 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
261283 endif
262284 endif
263285 endif
0 commit comments