20 lines
1.0 KiB
C
20 lines
1.0 KiB
C
#ifndef _KERNEL_AMD64_MEMORYBARRIER_H
|
|
#define _KERNEL_AMD64_MEMORYBARRIER_H
|
|
|
|
#define memory_barrier() \
|
|
do { \
|
|
__asm__ volatile ("mfence" ::: "memory"); \
|
|
} while (0)
|
|
|
|
#define read_memory_barrier() \
|
|
do { \
|
|
__asm__ volatile ("lfence" ::: "memory"); \
|
|
} while (0)
|
|
|
|
#define write_memory_barrier() \
|
|
do { \
|
|
__asm__ volatile ("sfence" ::: "memory"); \
|
|
} while (0)
|
|
|
|
#endif // _KERNEL_AMD64_MEMORYBARRIER_H
|