[PATCH 5/9] Replace 8 nops with proper sync instruction on mips
David Daney
ddaney at caviumnetworks.com
Thu Aug 13 08:16:56 PDT 2009
Matt Turner wrote:
> Cc: David Daney <ddaney at caviumnetworks.com>
Acked-by: David Daney <ddaney at caviumnetworks.com>
(for whatever that's worth)
> Cc: Ralf Baechle <ralf at linux-mips.org>
> Signed-off-by: Matt Turner <mattst88 at gmail.com>
> ---
> hw/xfree86/common/compiler.h | 21 +++++++++++----------
> 1 files changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/hw/xfree86/common/compiler.h b/hw/xfree86/common/compiler.h
> index 8ea19b3..2fc1e6a 100644
> --- a/hw/xfree86/common/compiler.h
> +++ b/hw/xfree86/common/compiler.h
> @@ -165,16 +165,17 @@ extern unsigned short ldw_brx(volatile unsigned char *, int);
> # endif
>
> # elif defined __mips__
> -# define mem_barrier() \
> - __asm__ __volatile__( \
> - "# prevent instructions being moved around\n\t" \
> - ".set\tnoreorder\n\t" \
> - "# 8 nops to fool the R4400 pipeline\n\t" \
> - "nop;nop;nop;nop;nop;nop;nop;nop\n\t" \
> - ".set\treorder" \
> - : /* no output */ \
> - : /* no input */ \
> - : "memory")
> + /* Note: sync instruction requires MIPS II instruction set */
> +# define mem_barrier() \
> + __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 write_mem_barrier() mem_barrier()
>
> # elif defined __powerpc__
More information about the xorg-devel
mailing list