Change all references of num_cpus -> num_cores
[akaros.git] / kern / arch / x86 / ros / membar.h
1 #ifndef ROS_INC_ARCH_MEMBAR_H
2 #define ROS_INC_ARCH_MEMBAR_H
3
4 /* Full CPU memory barrier */
5 #define mb() ({ asm volatile("mfence" ::: "memory"); })
6 /* Compiler memory barrier (optimization barrier) */
7 #define cmb() ({ asm volatile("" ::: "memory"); })
8 /* Partial CPU memory barriers */
9 #define rmb() cmb()
10 #define wmb() cmb()
11 #define wrmb() mb()
12 #define rwmb() cmb()
13
14 /* Forced barriers, used for string ops, SSE ops, dealing with hardware, or
15  * other places where you avoid 'normal' x86 read/writes (like having an IPI
16  * beat a write) */
17 #define mb_f() ({ asm volatile("mfence" ::: "memory"); })
18 #define rmb_f() ({ asm volatile("lfence" ::: "memory"); })
19 #define wmb_f() ({ asm volatile("sfence" ::: "memory"); })
20 #define wrmb_f() mb_f()
21 #define rwmb_f() mb_f()
22
23 /* Bus memory barriers */
24 #define bus_wmb() cmb()
25 #define bus_rmb() asm volatile("lock; addl $0,0(%%rsp)" : : : "memory")
26
27 #endif /* ROS_INC_ARCH_MEMBAR_H */