rockbox/firmware/asm
Aidan MacDonald 2f2b90535a firmware: use C versions of memcpy and memmove for ARM Cortex-M
The ARM assembly versions of memcpy and memmove try to
directly modify the PC based on the number of bytes to
be copied as an "optimization"; but this only works if
instructions are guaranteed to be 4 bytes wide.

This trick is completely broken on Cortex-M, since an
instruction can be 2-4 bytes wide: for example a memcpy
of 4 bytes ends up storing 32 bytes worth of garbage to
the target address!

Use the C memcpy/memmove implementations for Cortex-M
instead; fixing the ASM version is more trouble than
it's worth.

Change-Id: I695587fd585ec25ef276f2dbc61e2290b7015e13
2026-01-08 16:41:59 +00:00
..
arm arm: fix start_thread() on Cortex-M targets 2025-12-29 13:04:54 -05:00
m68k build: Various LTO fixes 2024-11-24 08:43:23 -05:00
mips configure: Partial revert of 6c6bdbf60e 2025-12-06 15:54:43 -05:00
beep.c beep/mixer code: Code police a bit. 2012-02-19 00:38:58 -05:00
corelock.c kernel: Break out kernel primitives into separate files and move to separate dir. 2014-03-03 18:11:57 +01:00
ffs.c Generic find_first_set_bit can use __builtin_ctz instead of __builtin_ffs 2012-02-04 18:08:17 -05:00
lcd-as-memframe-24bit.c lcd-24bit: Introduce a 24-bit mid-level LCD driver 2014-06-21 00:15:53 +02:00
lcd-as-memframe.c lcd: fix yellow from accidental commit 2024-04-06 21:37:14 -04:00
memcpy.c Renamed defines UNALIGNED to ROCKBOX_UNALIGNED - UNALIGNED is already 2017-01-15 21:32:49 +01:00
memmove.c Renamed defines UNALIGNED to ROCKBOX_UNALIGNED - UNALIGNED is already 2017-01-15 21:32:49 +01:00
mempcpy.c Add mempcpy implementation 2014-08-29 22:06:57 -04:00
memset.c Renamed defines UNALIGNED to ROCKBOX_UNALIGNED - UNALIGNED is already 2017-01-15 21:32:49 +01:00
memset16.c Fix dangerous casts 2017-02-04 17:24:47 +01:00
pcm-mixer.c Coldfire: Optimize emac context save/restore in mixer ISR. 2012-03-12 00:16:12 +01:00
SOURCES firmware: use C versions of memcpy and memmove for ARM Cortex-M 2026-01-08 16:41:59 +00:00
strlen.c Renamed defines UNALIGNED to ROCKBOX_UNALIGNED - UNALIGNED is already 2017-01-15 21:32:49 +01:00
thread-unix.c thread-unix patchup! 2014-08-18 10:40:44 -04:00
thread-win32.c
thread.c [1/4] Remove SH support and all archos targets 2020-07-24 21:20:13 +00:00
thread.h Only increase sigalthreads stack size for simulator or aarch64 builds. 2024-10-07 12:15:02 -04:00