summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2020-06-29 19:23:03 -0400
committerSolomon Peachy <pizza@shaftnet.org>2020-07-03 21:36:41 +0000
commit905e19905b8601b672ed9a9b7121dfdb2444602c (patch)
tree851998a51631946a860ed678c518f32ec92affb4 /firmware/target/arm
parent9cf2492407af6fae5928685205e7fc17032ac253 (diff)
downloadrockbox-905e19905b8601b672ed9a9b7121dfdb2444602c.tar.gz
rockbox-905e19905b8601b672ed9a9b7121dfdb2444602c.tar.bz2
rockbox-905e19905b8601b672ed9a9b7121dfdb2444602c.zip
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
Diffstat (limited to 'firmware/target/arm')
0 files changed, 0 insertions, 0 deletions