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