/SPARTAN/trunk/arch/ia32/include/barrier.h |
---|
43,8 → 43,18 |
#define CS_ENTER_BARRIER() __asm__ volatile ("" ::: "memory") |
#define CS_LEAVE_BARRIER() __asm__ volatile ("" ::: "memory") |
#ifdef __STRONG_ORDERING__ |
#define memory_barrier() |
#define read_barrier() |
#define write_barrier() |
#else |
#define memory_barrier() __asm__ volatile ("mfence\n" ::: "memory") |
#define read_barrier() __asm__ volatile ("sfence\n" ::: "memory") |
#define write_barrier() __asm__ volatile ("lfence\n" ::: "memory") |
#endif |
#endif |