]> granicus.if.org Git - postgresql/commit
Fix spinlock implementation for some !solaris sparc platforms.
authorAndres Freund <andres@anarazel.de>
Mon, 8 Sep 2014 22:47:32 +0000 (00:47 +0200)
committerAndres Freund <andres@anarazel.de>
Tue, 9 Sep 2014 21:37:50 +0000 (23:37 +0200)
commitd0b7ffc0f6d4e1d0e0d640ec4cc60ecd81e9ca2b
treeeddcdb9826a82c521043699ab3ddbc22e6fd6eb5
parent886b58b476fe4799702aecd47880aa7b7d336c17
Fix spinlock implementation for some !solaris sparc platforms.

Some Sparc CPUs can be run in various coherence models, ranging from
RMO (relaxed) over PSO (partial) to TSO (total). Solaris has always
run CPUs in TSO mode while in userland, but linux didn't use to and
the various *BSDs still don't. Unfortunately the sparc TAS/S_UNLOCK
were only correct under TSO. Fix that by adding the necessary memory
barrier instructions. On sparcv8+, which should be all relevant CPUs,
these are treated as NOPs if the current consistency model doesn't
require the barriers.

Discussion: 20140630222854.GW26930@awork2.anarazel.de

Will be backpatched to all released branches once a few buildfarm
cycles haven't shown up problems. As I've no access to sparc, this is
blindly written.
src/backend/port/tas/sunstudio_sparc.s
src/include/storage/s_lock.h