On 23 Nov, 2014, at 01:01 , Martin Husemann <mar...@duskware.de> wrote:
> On Sat, Nov 22, 2014 at 01:24:42PM +0800, Dennis Ferguson wrote: >> I'll guess one problem is in sparc/mutex.h, here: >> >> #define MUTEX_RECEIVE(mtx) /* nothing */ >> #define MUTEX_GIVE(mtx) /* nothing */ >> >> This works with TSO, but with RMO they need to somehow generate >> hardware memory barriers. See arm/mutex.h for an example with >> them filled in. > > Or src/sys/arch/sparc64/include/mutex.h - IIRC sparc v8 and earlier do not > have RMO. Ah, got it. I'd now guess that in src/common/lib/libc/arch/sparc64/atomic/membar_ops.S this comment /* These assume Total Store Order (TSO) */ suggests the problem. Dennis Ferguson