David S. Miller <[EMAIL PROTECTED]> wrote:
> > I don't think these actually exist at the moment. My suggestion was that we
> > rename {r,w,}mb() to io_{r,w,}mb().
>
> This is the first time I've seen that ?mb() should order I/O
> accesses. My sparc64 versions certainly don't handle that
> correctly. :-) That being said, I think we're all being
> educated to so me extent in this thread.
The FRV CPUs have a MEMBAR instruction; it takes no parameters and acts as a
mb().
You need this when accessing memory-mapped I/O (which is all I/O). Otherwise
reads and writes to peripherals may cross under some circumstances.
We've implemented the logic of when to insert MEMBAR into the FRV compiler,
using __builtin_read8/16/32() and __builtin_write8/16/32().
David