On Sat, Oct 02, 2010 at 10:54:04AM +0800, Deng-Cheng Zhu wrote: > Thanks guys. So let's turn the patch into the following? > > Signed-off-by: Deng-Cheng Zhu<dengcheng.zhu@xxxxxxxxx> > --- > tools/perf/perf.h | 14 ++++++++++++++ > 1 files changed, 14 insertions(+), 0 deletions(-) > > diff --git a/tools/perf/perf.h b/tools/perf/perf.h > index 6fb379b..cd05284 100644 > --- a/tools/perf/perf.h > +++ b/tools/perf/perf.h > @@ -73,6 +73,20 @@ > #define cpu_relax() asm volatile("":::"memory") > #endif > > +#ifdef __mips__ > +#include "../../arch/mips/include/asm/unistd.h" > +#define rmb() asm volatile( \ > + ".set push\n\t" \ > + ".set noreorder\n\t" \ > + ".set mips2\n\t" \ > + "sync\n\t" \ > + ".set pop" \ > + : /* no output */ \ > + : /* no input */ \ > + : "memory") > +#define cpu_relax() asm volatile("" ::: "memory") > +#endif Yes, aside of cosmetic issues this is looking good. The cosmetic issue is that there are lots of useless dot-ops in the inline assembler. That could be reduced to just .set mips2 before the SYNC and .set mips0 after. There are some considerations wrt. to the MT ASE so I've bounced a few emails around in the meantime but that's nothing that should stop merging this patch with the rest of the perf patches. Ralf