diff options
author | Rich Felker <dalias@aerifal.cx> | 2016-01-23 14:03:40 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-01-23 14:03:40 -0500 |
commit | b17fbd3520640745051d2fd9f1fd334ceb8b8783 (patch) | |
tree | e4b6b233e866b6baef822554855f23c342e9559a /src/mq | |
parent | 0f5eb3de2955e2eaf5ee4b9637d9216f82a97fbd (diff) | |
download | musl-b17fbd3520640745051d2fd9f1fd334ceb8b8783.tar.gz musl-b17fbd3520640745051d2fd9f1fd334ceb8b8783.tar.xz musl-b17fbd3520640745051d2fd9f1fd334ceb8b8783.zip |
improve aarch64 atomics
aarch64 provides ll/sc variants with acquire/release memory order, freeing us from the need to have full barriers both before and after the ll/sc operation. previously they were not used because the a_cas can fail without performing a_sc, in which case half of the barrier would be omitted. instead, define a custom version of a_cas for aarch64 which uses a_barrier explicitly when aborting the cas operation. aside from cas, other operations built on top of ll/sc are not affected since they never abort but rather loop until they succeed. a split ll/sc version of the pointer-sized a_cas_p is also introduced using the same technique. patch by Szabolcs Nagy.
Diffstat (limited to 'src/mq')
0 files changed, 0 insertions, 0 deletions