about summary refs log tree commit diff
path: root/src/complex
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-09-22 03:06:17 -0400
committerRich Felker <dalias@aerifal.cx>2013-09-22 03:06:17 -0400
commit35a6801c6cd31b8ace4a7c7fc138170434b6754f (patch)
treee1dc90e121b1850fd7a2cc9ffd8670368e3db47a /src/complex
parente803829e6b087c0ed91adc11f87185109bc59b31 (diff)
downloadmusl-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 'src/complex')
0 files changed, 0 insertions, 0 deletions