rockbox/firmware/asm/arm
Solomon Peachy 905e19905b ARM: Rejigger the asm corelock functions
This appears to solve _some_ of the crashes experienced when using
gcc494 on the multicore PP targets (eg most older ipods).

(With this change, the asm vs plain-C versions behave identically)

corelock_lock(), corelock_unlock(), and corelock_trylock() were declared
with the 'naked' attribute.  However, naked functions are only allowed
to have 'Basic Asm' components, and we used some extended asm, but
without declaring clobbered registers, making assumptions about register
arguments, and also directly returned to the caller via asm code.

This is what the GCC docs have to say about this stuff:

"While using extended asm or a mixture of basic asm and C code may
 appear to work, they cannot be depended upon to work reliably and are
 not supported."

Change-Id: I79a9c4895584f9af365e6c2387595e9c45d89c7d
2020-07-03 21:36:41 +00:00
..
beep.c
corelock.c ARM: Rejigger the asm corelock functions 2020-07-03 21:36:41 +00:00
ffs.S
lcd-as-memframe.S
memcpy.S Add mempcpy implementation 2014-08-29 22:06:57 -04:00
memmove.S
memset.S Fix arm memset() handling of negative arguments 2017-07-27 19:09:50 -04:00
memset16.S
pcm-mixer-armv4.c
pcm-mixer-armv5.c
pcm-mixer-armv6.c
pcm-mixer.c
thread.c Do some kernel cleanup 2014-08-08 01:59:59 -04:00
thread.h Introducing Targets iBasso DX50 & iBasso DX90 2014-09-18 18:19:01 +02:00