• Andres Freund's avatar
    Fix spinlock implementation for some !solaris sparc platforms. · 07968dbf
    Andres Freund authored
    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.
    07968dbf
sunstudio_sparc.s 1.49 KB