| #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() |