Vcore helper for clearing notif_pending
[akaros.git] / kern / arch / i686 / ros / membar.h
1 #ifndef _ARCH_MEMBAR_H
2 #define _ARCH_MEMBAR_H
3
4 /* Adding "memory" to keep the compiler from fucking with us */
5 #define mb() ({ asm volatile("mfence" ::: "memory"); })
6 #define rmb() ({ asm volatile("lfence" ::: "memory"); })
7 #define wmb() ({ asm volatile("" ::: "memory"); })
8 /* Compiler memory barrier */
9 #define cmb() ({ asm volatile("" ::: "memory"); })
10 /* Force a wmb, used in cases where an IPI could beat a write, even though
11  * write-orderings are respected.
12  * TODO: this probably doesn't do what you want. */
13 #define wmb_f() ({ asm volatile("sfence"); })
14
15 #endif