rockbox/firmware/asm/arm
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
..
beep.c Split CPU-optimized beep code into the firmware/asm tree. 2012-02-18 04:50:33 -05:00
corelock.c Fix unified syntax in ARM inline assembly 2023-03-23 18:16:33 +00:00
ffs.S arm: enable unified assembly syntax in more files 2025-04-18 10:26:02 -04:00
lcd-as-memframe.S arm: Use -masm-syntax-unified when compiling with gcc8 or newer 2024-05-08 21:45:42 -04:00
memcpy.S arm: Use -masm-syntax-unified when compiling with gcc8 or newer 2024-05-08 21:45:42 -04:00
memmove.S arm: Use -masm-syntax-unified when compiling with gcc8 or newer 2024-05-08 21:45:42 -04:00
memset.S arm: Use -masm-syntax-unified when compiling with gcc8 or newer 2024-05-08 21:45:42 -04:00
memset16.S arm: Use -masm-syntax-unified when compiling with gcc8 or newer 2024-05-08 21:45:42 -04:00
pcm-mixer-armv4.c Revise the PCM callback system after adding multichannel audio. 2012-03-03 07:23:38 +01:00
pcm-mixer-armv5.c Revise the PCM callback system after adding multichannel audio. 2012-03-03 07:23:38 +01:00
pcm-mixer-armv6.c arm: add ARMv7-M version of ARMv6 mixer code 2025-04-18 10:57:45 -04:00
pcm-mixer.c Move pcm_mixer helper routines to firmware/asm. 2012-01-22 18:46:45 +01:00
thread.c arm: add ARMv7-M support for thread context switching 2025-04-18 10:55:32 -04:00
thread.h arm: add ARMv7-M support for thread context switching 2025-04-18 10:55:32 -04:00