1
0
Fork 0
forked from len0rd/rockbox
foxbox/firmware/asm
Aidan MacDonald c33aafcd5c arm: add ARMv7-M version of ARMv6 mixer code
GCC cannot compile the existing assembly here on ARMv7-M,
claiming impossible constraints. It is actually possible to
compile if the input arguments (addresses and sizes) are
first moved to a high register so as not to conflict with
the use of r0-r7 in ldm/stm -- this is exactly what GCC does
for ARMv6, but it won't do it on ARMv7-M for some reason.

We can get a result similar to the ARMv6 code by manually
moving the inputs into temporaries, but the generated code
is a actually a bit smaller on ARMv7-M if the r0-r7 block is
shifted up to r3-r10. This only works since ARMv7-M supports
the 32-bit Thumb encoding -- 16-bit Thumb can't represent an
ldm/stm instruction of this type.

It's worth #ifdef'ing the code because although the ARMv7-M
version works on ARMv6 too, it spills a lot of registers on
the stack even though register use is mostly similar.

Change-Id: I9bc8b5c76e198aecfd0a0e7a2158b1c00f82c4df
2025-04-18 10:57:45 -04:00
..
arm arm: add ARMv7-M version of ARMv6 mixer code 2025-04-18 10:57:45 -04:00
m68k build: Various LTO fixes 2024-11-24 08:43:23 -05:00
mips build: Various LTO fixes 2024-11-24 08:43:23 -05:00
asm.make Apparently make doesn't like inline comments 2012-03-28 23:14:39 +02: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 Rename symbols of FiiO M3K Linux-based port 2021-02-27 23:53:28 +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 Create fimrware/asm directory for assembly optimized stuff. 2012-01-22 18:46:44 +01:00
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