FRV: Don't make smp_{r, w, }mb() interpolate MEMBAR when CONFIG_SMP=n [try #2]

Don't make smp_{r,w,}mb() interpolate a MEMBAR instruction when CONFIG_SMP=n as
SMP memory barries on UP systems should interpolate a compiler barrier only.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by David Howells and committed by Linus Torvalds f17520e1 ed9b949f

+15 -6
+15 -6
include/asm-frv/system.h
··· 179 179 #define mb() asm volatile ("membar" : : :"memory") 180 180 #define rmb() asm volatile ("membar" : : :"memory") 181 181 #define wmb() asm volatile ("membar" : : :"memory") 182 - #define set_mb(var, value) do { var = value; mb(); } while (0) 182 + #define read_barrier_depends() barrier() 183 183 184 - #define smp_mb() mb() 185 - #define smp_rmb() rmb() 186 - #define smp_wmb() wmb() 187 - 188 - #define read_barrier_depends() do {} while(0) 184 + #ifdef CONFIG_SMP 185 + #define smp_mb() mb() 186 + #define smp_rmb() rmb() 187 + #define smp_wmb() wmb() 189 188 #define smp_read_barrier_depends() read_barrier_depends() 189 + #define set_mb(var, value) \ 190 + do { xchg(&var, (value)); } while (0) 191 + #else 192 + #define smp_mb() barrier() 193 + #define smp_rmb() barrier() 194 + #define smp_wmb() barrier() 195 + #define smp_read_barrier_depends() do {} while(0) 196 + #define set_mb(var, value) \ 197 + do { var = (value); barrier(); } while (0) 198 + #endif 190 199 191 200 #define HARD_RESET_NOW() \ 192 201 do { \