From 2b47d54ed41c33baf5825185168b493317c5572f Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 28 Jul 2016 19:21:10 +0000 Subject: sh: add J2 atomics using the cas.l instruction Signed-off-by: Rich Felker --- arch/sh/include/asm/barrier.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'arch/sh/include/asm/barrier.h') diff --git a/arch/sh/include/asm/barrier.h b/arch/sh/include/asm/barrier.h index 8a84e05adb2e..3c30b6e166b6 100644 --- a/arch/sh/include/asm/barrier.h +++ b/arch/sh/include/asm/barrier.h @@ -29,6 +29,11 @@ #define wmb() mb() #define ctrl_barrier() __icbi(PAGE_OFFSET) #else +#if defined(CONFIG_CPU_J2) && defined(CONFIG_SMP) +#define __smp_mb() do { int tmp = 0; __asm__ __volatile__ ("cas.l %0,%0,@%1" : "+r"(tmp) : "z"(&tmp) : "memory", "t"); } while(0) +#define __smp_rmb() __smp_mb() +#define __smp_wmb() __smp_mb() +#endif #define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") #endif -- cgit v1.2.1