@@ -124,6 +124,7 @@ INC += \
124
124
-isystem sdk/src/rp2_common/pico_atomic/include/ \
125
125
-isystem sdk/src/rp2_common/pico_bootrom/include/ \
126
126
-isystem sdk/src/rp2_common/pico_double/include/ \
127
+ -isystem sdk/src/rp2_common/pico_mem_ops/include/ \
127
128
-isystem sdk/src/rp2_common/pico_multicore/include/ \
128
129
-isystem sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include/ \
129
130
-isystem sdk/src/rp2_common/pico_stdio/include/ \
@@ -213,6 +214,165 @@ endif
213
214
214
215
LIBS += -lc
215
216
217
+ PICO_WRAP_FLOAT_AEABI_FLAGS := \
218
+ -Wl,--wrap=__aeabi_fadd \
219
+ -Wl,--wrap=__aeabi_fdiv \
220
+ -Wl,--wrap=__aeabi_fmul \
221
+ -Wl,--wrap=__aeabi_frsub \
222
+ -Wl,--wrap=__aeabi_fsub \
223
+ -Wl,--wrap=__aeabi_cfcmpeq \
224
+ -Wl,--wrap=__aeabi_cfrcmple \
225
+ -Wl,--wrap=__aeabi_cfcmple \
226
+ -Wl,--wrap=__aeabi_fcmpeq \
227
+ -Wl,--wrap=__aeabi_fcmplt \
228
+ -Wl,--wrap=__aeabi_fcmple \
229
+ -Wl,--wrap=__aeabi_fcmpge \
230
+ -Wl,--wrap=__aeabi_fcmpgt \
231
+ -Wl,--wrap=__aeabi_fcmpun \
232
+ -Wl,--wrap=__aeabi_i2f \
233
+ -Wl,--wrap=__aeabi_l2f \
234
+ -Wl,--wrap=__aeabi_ui2f \
235
+ -Wl,--wrap=__aeabi_ul2f \
236
+ -Wl,--wrap=__aeabi_f2iz \
237
+ -Wl,--wrap=__aeabi_f2lz \
238
+ -Wl,--wrap=__aeabi_f2uiz \
239
+ -Wl,--wrap=__aeabi_f2ulz \
240
+ -Wl,--wrap=__aeabi_f2d \
241
+ -Wl,--wrap=sqrtf
242
+
243
+ PICO_WRAP_FLOAT_SCI_FLAGS := \
244
+ -Wl,--wrap=cosf \
245
+ -Wl,--wrap=sinf \
246
+ -Wl,--wrap=tanf \
247
+ -Wl,--wrap=atan2f \
248
+ -Wl,--wrap=expf \
249
+ -Wl,--wrap=logf \
250
+ -Wl,--wrap=ldexpf \
251
+ -Wl,--wrap=copysignf \
252
+ -Wl,--wrap=truncf \
253
+ -Wl,--wrap=floorf \
254
+ -Wl,--wrap=ceilf \
255
+ -Wl,--wrap=roundf \
256
+ -Wl,--wrap=sincosf \
257
+ -Wl,--wrap=asinf \
258
+ -Wl,--wrap=acosf \
259
+ -Wl,--wrap=atanf \
260
+ -Wl,--wrap=sinhf \
261
+ -Wl,--wrap=coshf \
262
+ -Wl,--wrap=tanhf \
263
+ -Wl,--wrap=asinhf \
264
+ -Wl,--wrap=acoshf \
265
+ -Wl,--wrap=atanhf \
266
+ -Wl,--wrap=exp2f \
267
+ -Wl,--wrap=log2f \
268
+ -Wl,--wrap=exp10f \
269
+ -Wl,--wrap=log10f \
270
+ -Wl,--wrap=powf \
271
+ -Wl,--wrap=powintf \
272
+ -Wl,--wrap=hypotf \
273
+ -Wl,--wrap=cbrtf \
274
+ -Wl,--wrap=fmodf \
275
+ -Wl,--wrap=dremf \
276
+ -Wl,--wrap=remainderf \
277
+ -Wl,--wrap=remquof \
278
+ -Wl,--wrap=expm1f \
279
+ -Wl,--wrap=log1pf \
280
+ -Wl,--wrap=fmaf
281
+
282
+ PICO_WRAP_DOUBLE_FLAGS := \
283
+ -Wl,--wrap=__aeabi_dadd \
284
+ -Wl,--wrap=__aeabi_ddiv \
285
+ -Wl,--wrap=__aeabi_dmul \
286
+ -Wl,--wrap=__aeabi_drsub \
287
+ -Wl,--wrap=__aeabi_dsub \
288
+ -Wl,--wrap=__aeabi_cdcmpeq \
289
+ -Wl,--wrap=__aeabi_cdrcmple \
290
+ -Wl,--wrap=__aeabi_cdcmple \
291
+ -Wl,--wrap=__aeabi_dcmpeq \
292
+ -Wl,--wrap=__aeabi_dcmplt \
293
+ -Wl,--wrap=__aeabi_dcmple \
294
+ -Wl,--wrap=__aeabi_dcmpge \
295
+ -Wl,--wrap=__aeabi_dcmpgt \
296
+ -Wl,--wrap=__aeabi_dcmpun \
297
+ -Wl,--wrap=__aeabi_i2d \
298
+ -Wl,--wrap=__aeabi_l2d \
299
+ -Wl,--wrap=__aeabi_ui2d \
300
+ -Wl,--wrap=__aeabi_ul2d \
301
+ -Wl,--wrap=__aeabi_d2iz \
302
+ -Wl,--wrap=__aeabi_d2lz \
303
+ -Wl,--wrap=__aeabi_d2uiz \
304
+ -Wl,--wrap=__aeabi_d2ulz \
305
+ -Wl,--wrap=__aeabi_d2f \
306
+ -Wl,--wrap=sqrt \
307
+ -Wl,--wrap=cos \
308
+ -Wl,--wrap=sin \
309
+ -Wl,--wrap=tan \
310
+ -Wl,--wrap=atan2 \
311
+ -Wl,--wrap=exp \
312
+ -Wl,--wrap=log \
313
+ -Wl,--wrap=ldexp \
314
+ -Wl,--wrap=copysign \
315
+ -Wl,--wrap=trunc \
316
+ -Wl,--wrap=floor \
317
+ -Wl,--wrap=ceil \
318
+ -Wl,--wrap=round \
319
+ -Wl,--wrap=sincos \
320
+ -Wl,--wrap=asin \
321
+ -Wl,--wrap=acos \
322
+ -Wl,--wrap=atan \
323
+ -Wl,--wrap=sinh \
324
+ -Wl,--wrap=cosh \
325
+ -Wl,--wrap=tanh \
326
+ -Wl,--wrap=asinh \
327
+ -Wl,--wrap=acosh \
328
+ -Wl,--wrap=atanh \
329
+ -Wl,--wrap=exp2 \
330
+ -Wl,--wrap=log2 \
331
+ -Wl,--wrap=exp10 \
332
+ -Wl,--wrap=log10 \
333
+ -Wl,--wrap=pow \
334
+ -Wl,--wrap=powint \
335
+ -Wl,--wrap=hypot \
336
+ -Wl,--wrap=cbrt \
337
+ -Wl,--wrap=fmod \
338
+ -Wl,--wrap=drem \
339
+ -Wl,--wrap=remainder \
340
+ -Wl,--wrap=remquo \
341
+ -Wl,--wrap=expm1 \
342
+ -Wl,--wrap=log1p \
343
+ -Wl,--wrap=fma
344
+
345
+ PICO_WRAP_MEM_OPS_FLAGS := \
346
+ -Wl,--wrap=memcpy \
347
+ -Wl,--wrap=memset \
348
+ -Wl,--wrap=__aeabi_memcpy \
349
+ -Wl,--wrap=__aeabi_memset \
350
+ -Wl,--wrap=__aeabi_memcpy4 \
351
+ -Wl,--wrap=__aeabi_memset4 \
352
+ -Wl,--wrap=__aeabi_memcpy8 \
353
+ -Wl,--wrap=__aeabi_memset8
354
+
355
+ # Wrap a bunch of math stuff to use the Pico SDK divider
356
+ OTHER_PICO_FLAGS := \
357
+ -Wl,--wrap=__aeabi_ldiv0 \
358
+ -Wl,--wrap=__aeabi_idiv0 \
359
+ -Wl,--wrap=__aeabi_lmul \
360
+ -Wl,--wrap=__clzsi2 \
361
+ -Wl,--wrap=__clzdi2 \
362
+ -Wl,--wrap=__ctzsi2 \
363
+ -Wl,--wrap=__ctzdi2 \
364
+ -Wl,--wrap=__popcountsi2 \
365
+ -Wl,--wrap=__popcountdi2 \
366
+ -Wl,--wrap=__clz \
367
+ -Wl,--wrap=__clzl \
368
+ -Wl,--wrap=__clzll \
369
+ -Wl,--wrap=__aeabi_idiv \
370
+ -Wl,--wrap=__aeabi_idivmod \
371
+ -Wl,--wrap=__aeabi_ldivmod \
372
+ -Wl,--wrap=__aeabi_uidiv \
373
+ -Wl,--wrap=__aeabi_uidivmod \
374
+ -Wl,--wrap=__aeabi_uldivmod
375
+
216
376
ifeq ($(CHIP_VARIANT ) ,RP2040)
217
377
CFLAGS += \
218
378
-march=armv6-m \
@@ -229,7 +389,7 @@ SRC_SDK_CHIP_VARIANT := \
229
389
src/rp2_common/hardware_rtc/rtc.c \
230
390
src/rp2_common/pico_double/double_init_rom_rp2040.c \
231
391
src/rp2_common/pico_float/float_init_rom_rp2040.c \
232
- src/rp2_common/pico_float/float_math .c \
392
+ src/rp2_common/pico_mem_ops/mem_ops .c \
233
393
234
394
SRC_S_UPPER_CHIP_VARIANT := \
235
395
sdk/src/rp2_common/hardware_divider/divider.S \
@@ -239,155 +399,12 @@ SRC_S_UPPER_CHIP_VARIANT := \
239
399
sdk/src/rp2_common/pico_float/float_aeabi_rp2040.S \
240
400
sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
241
401
242
- # Wrap a bunch of math stuff to use the Pico SDK divider
243
- PICO_LDFLAGS += -Wl,--wrap=__aeabi_ldiv0 \
244
- -Wl,--wrap=__aeabi_idiv0 \
245
- -Wl,--wrap=__aeabi_lmul \
246
- -Wl,--wrap=__clzsi2 \
247
- -Wl,--wrap=__clzdi2 \
248
- -Wl,--wrap=__ctzsi2 \
249
- -Wl,--wrap=__ctzdi2 \
250
- -Wl,--wrap=__popcountsi2 \
251
- -Wl,--wrap=__popcountdi2 \
252
- -Wl,--wrap=__clz \
253
- -Wl,--wrap=__clzl \
254
- -Wl,--wrap=__clzll \
255
- -Wl,--wrap=__aeabi_idiv \
256
- -Wl,--wrap=__aeabi_idivmod \
257
- -Wl,--wrap=__aeabi_ldivmod \
258
- -Wl,--wrap=__aeabi_uidiv \
259
- -Wl,--wrap=__aeabi_uidivmod \
260
- -Wl,--wrap=__aeabi_uldivmod \
261
- -Wl,--wrap=__aeabi_dadd \
262
- -Wl,--wrap=__aeabi_ddiv \
263
- -Wl,--wrap=__aeabi_dmul \
264
- -Wl,--wrap=__aeabi_drsub \
265
- -Wl,--wrap=__aeabi_dsub \
266
- -Wl,--wrap=__aeabi_cdcmpeq \
267
- -Wl,--wrap=__aeabi_cdrcmple \
268
- -Wl,--wrap=__aeabi_cdcmple \
269
- -Wl,--wrap=__aeabi_dcmpeq \
270
- -Wl,--wrap=__aeabi_dcmplt \
271
- -Wl,--wrap=__aeabi_dcmple \
272
- -Wl,--wrap=__aeabi_dcmpge \
273
- -Wl,--wrap=__aeabi_dcmpgt \
274
- -Wl,--wrap=__aeabi_dcmpun \
275
- -Wl,--wrap=__aeabi_i2d \
276
- -Wl,--wrap=__aeabi_l2d \
277
- -Wl,--wrap=__aeabi_ui2d \
278
- -Wl,--wrap=__aeabi_ul2d \
279
- -Wl,--wrap=__aeabi_d2iz \
280
- -Wl,--wrap=__aeabi_d2lz \
281
- -Wl,--wrap=__aeabi_d2uiz \
282
- -Wl,--wrap=__aeabi_d2ulz \
283
- -Wl,--wrap=__aeabi_d2f \
284
- -Wl,--wrap=sqrt \
285
- -Wl,--wrap=cos \
286
- -Wl,--wrap=sin \
287
- -Wl,--wrap=tan \
288
- -Wl,--wrap=atan2 \
289
- -Wl,--wrap=exp \
290
- -Wl,--wrap=log \
291
- -Wl,--wrap=ldexp \
292
- -Wl,--wrap=copysign \
293
- -Wl,--wrap=trunc \
294
- -Wl,--wrap=floor \
295
- -Wl,--wrap=ceil \
296
- -Wl,--wrap=round \
297
- -Wl,--wrap=sincos \
298
- -Wl,--wrap=asin \
299
- -Wl,--wrap=acos \
300
- -Wl,--wrap=atan \
301
- -Wl,--wrap=sinh \
302
- -Wl,--wrap=cosh \
303
- -Wl,--wrap=tanh \
304
- -Wl,--wrap=asinh \
305
- -Wl,--wrap=acosh \
306
- -Wl,--wrap=atanh \
307
- -Wl,--wrap=exp2 \
308
- -Wl,--wrap=log2 \
309
- -Wl,--wrap=exp10 \
310
- -Wl,--wrap=log10 \
311
- -Wl,--wrap=pow \
312
- -Wl,--wrap=powint \
313
- -Wl,--wrap=hypot \
314
- -Wl,--wrap=cbrt \
315
- -Wl,--wrap=fmod \
316
- -Wl,--wrap=drem \
317
- -Wl,--wrap=remainder \
318
- -Wl,--wrap=remquo \
319
- -Wl,--wrap=expm1 \
320
- -Wl,--wrap=log1p \
321
- -Wl,--wrap=fma \
322
- -Wl,--wrap=__aeabi_fadd \
323
- -Wl,--wrap=__aeabi_fdiv \
324
- -Wl,--wrap=__aeabi_fmul \
325
- -Wl,--wrap=__aeabi_frsub \
326
- -Wl,--wrap=__aeabi_fsub \
327
- -Wl,--wrap=__aeabi_cfcmpeq \
328
- -Wl,--wrap=__aeabi_cfrcmple \
329
- -Wl,--wrap=__aeabi_cfcmple \
330
- -Wl,--wrap=__aeabi_fcmpeq \
331
- -Wl,--wrap=__aeabi_fcmplt \
332
- -Wl,--wrap=__aeabi_fcmple \
333
- -Wl,--wrap=__aeabi_fcmpge \
334
- -Wl,--wrap=__aeabi_fcmpgt \
335
- -Wl,--wrap=__aeabi_fcmpun \
336
- -Wl,--wrap=__aeabi_i2f \
337
- -Wl,--wrap=__aeabi_l2f \
338
- -Wl,--wrap=__aeabi_ui2f \
339
- -Wl,--wrap=__aeabi_ul2f \
340
- -Wl,--wrap=__aeabi_f2iz \
341
- -Wl,--wrap=__aeabi_f2lz \
342
- -Wl,--wrap=__aeabi_f2uiz \
343
- -Wl,--wrap=__aeabi_f2ulz \
344
- -Wl,--wrap=__aeabi_f2d \
345
- -Wl,--wrap=sqrtf \
346
- -Wl,--wrap=cosf \
347
- -Wl,--wrap=sinf \
348
- -Wl,--wrap=tanf \
349
- -Wl,--wrap=atan2f \
350
- -Wl,--wrap=expf \
351
- -Wl,--wrap=logf \
352
- -Wl,--wrap=ldexpf \
353
- -Wl,--wrap=copysignf \
354
- -Wl,--wrap=truncf \
355
- -Wl,--wrap=floorf \
356
- -Wl,--wrap=ceilf \
357
- -Wl,--wrap=roundf \
358
- -Wl,--wrap=sincosf \
359
- -Wl,--wrap=asinf \
360
- -Wl,--wrap=acosf \
361
- -Wl,--wrap=atanf \
362
- -Wl,--wrap=sinhf \
363
- -Wl,--wrap=coshf \
364
- -Wl,--wrap=tanhf \
365
- -Wl,--wrap=asinhf \
366
- -Wl,--wrap=acoshf \
367
- -Wl,--wrap=atanhf \
368
- -Wl,--wrap=exp2f \
369
- -Wl,--wrap=log2f \
370
- -Wl,--wrap=exp10f \
371
- -Wl,--wrap=log10f \
372
- -Wl,--wrap=powf \
373
- -Wl,--wrap=powintf \
374
- -Wl,--wrap=hypotf \
375
- -Wl,--wrap=cbrtf \
376
- -Wl,--wrap=fmodf \
377
- -Wl,--wrap=dremf \
378
- -Wl,--wrap=remainderf \
379
- -Wl,--wrap=remquof \
380
- -Wl,--wrap=expm1f \
381
- -Wl,--wrap=log1pf \
382
- -Wl,--wrap=fmaf \
383
- -Wl,--wrap=memcpy \
384
- -Wl,--wrap=memset \
385
- -Wl,--wrap=__aeabi_memcpy \
386
- -Wl,--wrap=__aeabi_memset \
387
- -Wl,--wrap=__aeabi_memcpy4 \
388
- -Wl,--wrap=__aeabi_memset4 \
389
- -Wl,--wrap=__aeabi_memcpy8 \
390
- -Wl,--wrap=__aeabi_memset8
402
+ PICO_LDFLAGS += \
403
+ $(PICO_WRAP_FLOAT_AEABI_FLAGS ) \
404
+ $(PICO_WRAP_FLOAT_SCI_FLAGS ) \
405
+ $(PICO_WRAP_DOUBLE_FLAGS ) \
406
+ $(PICO_WRAP_MEM_OPS_FLAGS ) \
407
+ $(OTHER_PICO_FLAGS )
391
408
392
409
UF2_ID = 0xE48BFF56
393
410
@@ -414,6 +431,15 @@ CFLAGS += -DPICO_RP2350=1
414
431
SRC_SDK_CHIP_VARIANT := \
415
432
src/rp2_common/hardware_powman/powman.c \
416
433
434
+ SRC_S_UPPER_CHIP_VARIANT := \
435
+ sdk/src/rp2_common/pico_double/double_conv_m33.S \
436
+ sdk/src/rp2_common/pico_double/double_fma_dcp.S \
437
+ sdk/src/rp2_common/pico_double/double_sci_m33.S \
438
+ sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S \
439
+ sdk/src/rp2_common/pico_float/float_conv_m33.S \
440
+
441
+ PICO_LDFLAGS += $(PICO_WRAP_FLOAT_SCI_FLAGS ) $(PICO_WRAP_DOUBLE_FLAGS )
442
+
417
443
ifeq ($(CHIP_PACKAGE ) ,A)
418
444
CFLAGS += -DPICO_RP2350A=1
419
445
CFLAGS += -DPICO_RP2350B=0
@@ -460,6 +486,7 @@ SRC_SDK := \
460
486
src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c \
461
487
src/rp2_common/pico_clib_interface/newlib_interface.c \
462
488
src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c \
489
+ src/rp2_common/pico_float/float_math.c \
463
490
src/rp2_common/pico_multicore/multicore.c \
464
491
src/rp2_common/pico_platform_panic/panic.c \
465
492
src/rp2_common/pico_printf/printf.c \
0 commit comments