> > No, rmb and wmb need to generate code. > > If they do we'll have to surround each their use with > ifndef x86 as you suggest later. Which is just messy.
[1 hour later] I see what you mean now. You assume there are no accesses to write-combining memory (of course) or non-temporal load/stores (because they are accessed only with assembly), so you can make rmb/wmb no-ops on x86. I was confused by the kernel (and liburcu's) choice to use lfence/sfence for rmb/wmb. Then it's indeed better to move the wmb() defines to qemu-barrier.h, where they can be made processor-dependent. S390, it seems, also does not need rmb/wmb. Paolo