blob: 57a0b5418552f8154acd978969fc0cd2294cf49e [file] [log] [blame]
#pragma once
/* Full CPU memory barrier */
#define mb() __sync_synchronize()
/* Compiler memory barrier */
#define cmb() ({ asm volatile("" ::: "memory"); })
/* Partial CPU memory barriers */
#define rmb() mb()
#define wmb() mb()
#define wrmb() mb()
#define rwmb() mb()
/* Forced barriers, used for string ops, SSE ops, dealing with hardware, or
* other places where you avoid 'normal' x86 read/writes (like having an IPI
* beat a write) */
#define mb_f() mb()
#define rmb_f() rmb()
#define wmb_f() wmb()
#define wrmb_f() wrmb()
#define rwmb_f() rwmb()
/* Bus memory barriers */
#warning "Implement bus memory barriers"
#define bus_wmb() mb()
#define bus_rmb() mb()