MIPS mem_barrier

rixed at happyleptic.org rixed at happyleptic.org
Thu Feb 4 11:57:50 PST 2010

In compiler.h, is defined mem_barrier() which is used if I understand
correctly when accessing the memory mapped IO, to force the CPU to
ensure previous writes/reads are commited to the bus before the
following ones (gcc being independantly informed to keep the source code
reads/writes ordering by the use of volatile).

On MIPS on Linux, I see that the mem_barrier consist of several nops.

I do not understand these nops, since first MIPS ISA there exist
a SYNC instruction that forces the CPU to flush reads/writes for this
very purpose.

Also, this instruction is certainly faster, and more portable than a
sequence of nops.

But I'm certain that the original author knew more about MIPS than I do,
that's why I'm asking here for a clue.

More information about the xorg mailing list