@@ -124,6 +124,7 @@ INC += \
124124 -isystem sdk/src/rp2_common/pico_atomic/include/ \
125125 -isystem sdk/src/rp2_common/pico_bootrom/include/ \
126126 -isystem sdk/src/rp2_common/pico_double/include/ \
127+ -isystem sdk/src/rp2_common/pico_mem_ops/include/ \
127128 -isystem sdk/src/rp2_common/pico_multicore/include/ \
128129 -isystem sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include/ \
129130 -isystem sdk/src/rp2_common/pico_stdio/include/ \
@@ -213,6 +214,165 @@ endif
213214
214215LIBS += -lc
215216
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+
216376ifeq ($(CHIP_VARIANT ) ,RP2040)
217377CFLAGS += \
218378 -march=armv6-m \
@@ -229,7 +389,7 @@ SRC_SDK_CHIP_VARIANT := \
229389 src/rp2_common/hardware_rtc/rtc.c \
230390 src/rp2_common/pico_double/double_init_rom_rp2040.c \
231391 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 \
233393
234394SRC_S_UPPER_CHIP_VARIANT := \
235395 sdk/src/rp2_common/hardware_divider/divider.S \
@@ -239,155 +399,12 @@ SRC_S_UPPER_CHIP_VARIANT := \
239399 sdk/src/rp2_common/pico_float/float_aeabi_rp2040.S \
240400 sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
241401
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 )
391408
392409UF2_ID = 0xE48BFF56
393410
@@ -414,6 +431,15 @@ CFLAGS += -DPICO_RP2350=1
414431SRC_SDK_CHIP_VARIANT := \
415432 src/rp2_common/hardware_powman/powman.c \
416433
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+
417443ifeq ($(CHIP_PACKAGE ) ,A)
418444CFLAGS += -DPICO_RP2350A=1
419445CFLAGS += -DPICO_RP2350B=0
@@ -460,6 +486,7 @@ SRC_SDK := \
460486 src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c \
461487 src/rp2_common/pico_clib_interface/newlib_interface.c \
462488 src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c \
489+ src/rp2_common/pico_float/float_math.c \
463490 src/rp2_common/pico_multicore/multicore.c \
464491 src/rp2_common/pico_platform_panic/panic.c \
465492 src/rp2_common/pico_printf/printf.c \
0 commit comments