--- - branch: MAIN date: Sat Apr 9 12:06:48 UTC 2022 files: - new: '1.7' old: '1.6' path: src/common/lib/libc/arch/sparc64/atomic/membar_ops.S pathrev: src/common/lib/libc/arch/sparc64/atomic/membar_ops.S@1.7 type: modified id: 20220409T120648Z.e4eb7141ed3e3c42a0e9d8596d191860853e35e5 log: | sparc64: Fix membar_sync by issuing membar #StoreLoad. In TSO this is the only memory barrier ever needed, and somehow we got this wrong and instead issued an unnecessary membar #LoadLoad -- not needed even in PSO let alone in TSO. XXX Apparently we may run userland programs with PSO or RMO, in which case all of these membars need fixing: PSO RMO membar_consumer nop membar #LoadLoad membar_producer membar #StoreStore membar #StoreStore membar_enter nop membar #LoadLoad|LoadStore membar_exit membar #StoreStore membar #LoadStore|StoreStore membar_sync membar #StoreLoad|StoreStore membar #...everything... But at least this fixes the TSO case in which we run the kernel. Also I'm not sure there's any non-TSO hardware out there in practice. module: src subject: 'CVS commit: src/common/lib/libc/arch/sparc64/atomic' unixtime: '1649506008' user: riastradh