1 #ifndef _H8300_BARRIER_H 2 #define _H8300_BARRIER_H 3 4 #define nop() asm volatile ("nop"::) 5 6 /* 7 * Force strict CPU ordering. 8 * Not really required on H8... 9 */ 10 #define mb() asm volatile ("" : : :"memory") 11 #define rmb() asm volatile ("" : : :"memory") 12 #define wmb() asm volatile ("" : : :"memory") 13 #define set_mb(var, value) do { xchg(&var, value); } while (0) 14 15 #ifdef CONFIG_SMP 16 #define smp_mb() mb() 17 #define smp_rmb() rmb() 18 #define smp_wmb() wmb() 19 #define smp_read_barrier_depends() read_barrier_depends() 20 #else 21 #define smp_mb() barrier() 22 #define smp_rmb() barrier() 23 #define smp_wmb() barrier() 24 #define smp_read_barrier_depends() do { } while(0) 25 #endif 26 27 #endif /* _H8300_BARRIER_H */ 28