From: Nicholas Piggin > Sent: 04 August 2017 10:04 > On Fri, 04 Aug 2017 11:40:43 +1000 > Benjamin Herrenschmidt <b...@kernel.crashing.org> wrote: > > > On Fri, 2017-08-04 at 03:50 +1000, Nicholas Piggin wrote: > > > Hey, so... why are any of these implemented in asm? We should > > > just do them all in C, right? I looked a bit harder at code gen > > > and a couple of them are still emitting larx/stcx. > > > > As long as we can guarantee that the C compiler won't play games > > moving stuff around. But yes, I tend to agree. > > > I believe so. I mean we already depend on the same pattern for any > other sequence of local_irq_disable(); c code; local_irq_enable(); > so we'd have other problems if we couldn't.
I'd guess that a "memory" clobber on the irq_disable/enable would be enough. It could be restricted to the memory area being updated. David