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