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