@@ -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/ \
@@ -217,6 +218,165 @@ endif
217218
218219LIBS += -lc
219220
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+
220380ifeq ($(CHIP_VARIANT ) ,RP2040)
221381CFLAGS += \
222382 -march=armv6-m \
@@ -233,7 +393,7 @@ SRC_SDK_CHIP_VARIANT := \
233393 src/rp2_common/hardware_rtc/rtc.c \
234394 src/rp2_common/pico_double/double_init_rom_rp2040.c \
235395 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 \
237397
238398SRC_S_UPPER_CHIP_VARIANT := \
239399 sdk/src/rp2_common/hardware_divider/divider.S \
@@ -243,155 +403,12 @@ SRC_S_UPPER_CHIP_VARIANT := \
243403 sdk/src/rp2_common/pico_float/float_aeabi_rp2040.S \
244404 sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
245405
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 )
395412
396413UF2_ID = 0xE48BFF56
397414
@@ -418,6 +435,15 @@ CFLAGS += -DPICO_RP2350=1
418435SRC_SDK_CHIP_VARIANT := \
419436 src/rp2_common/hardware_powman/powman.c \
420437
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+
421447ifeq ($(CHIP_PACKAGE ) ,A)
422448CFLAGS += -DPICO_RP2350A=1
423449CFLAGS += -DPICO_RP2350B=0
@@ -464,6 +490,7 @@ SRC_SDK := \
464490 src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c \
465491 src/rp2_common/pico_clib_interface/newlib_interface.c \
466492 src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c \
493+ src/rp2_common/pico_float/float_math.c \
467494 src/rp2_common/pico_multicore/multicore.c \
468495 src/rp2_common/pico_platform_panic/panic.c \
469496 src/rp2_common/pico_printf/printf.c \
0 commit comments