diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-09-22 03:06:17 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-09-22 03:06:17 -0400 |
commit | 35a6801c6cd31b8ace4a7c7fc138170434b6754f (patch) | |
tree | e1dc90e121b1850fd7a2cc9ffd8670368e3db47a /arch/x86_64 | |
parent | e803829e6b087c0ed91adc11f87185109bc59b31 (diff) | |
download | musl-35a6801c6cd31b8ace4a7c7fc138170434b6754f.tar.gz musl-35a6801c6cd31b8ace4a7c7fc138170434b6754f.tar.xz musl-35a6801c6cd31b8ace4a7c7fc138170434b6754f.zip |
fix arm atomic store and generate simpler/less-bloated/faster code
atomic store was lacking a barrier, which was fine for legacy arm with no real smp and kernel-emulated cas, but unsuitable for more modern systems. the kernel provides another "kuser" function, at 0xffff0fa0, which could be used for the barrier, but using that would drop support for kernels 2.6.12 through 2.6.14 unless an extra conditional were added to check for barrier availability. just using the barrier in the kernel cas is easier, and, based on my reading of the assembly code in the kernel, does not appear to be significantly slower. at the same time, other atomic operations are adapted to call the kernel cas function directly rather than using a_cas; due to small differences in their interface contracts, this makes the generated code much simpler.
Diffstat (limited to 'arch/x86_64')
0 files changed, 0 insertions, 0 deletions