xref: /kvm-unit-tests/lib/x86/asm/barrier.h (revision 53776986c1228215be984863bac0a9d052e0529c)
18226c540SAlexander Gordeev #ifndef _ASM_X86_BARRIER_H_
28226c540SAlexander Gordeev #define _ASM_X86_BARRIER_H_
38226c540SAlexander Gordeev /*
48226c540SAlexander Gordeev  * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@redhat.com>
58226c540SAlexander Gordeev  *
68226c540SAlexander Gordeev  * This work is licensed under the terms of the GNU LGPL, version 2.
78226c540SAlexander Gordeev  */
88226c540SAlexander Gordeev 
9*53776986SRoman Kagan #include <processor.h>
10*53776986SRoman Kagan 
118226c540SAlexander Gordeev #define mb()	asm volatile("mfence":::"memory")
128226c540SAlexander Gordeev #define rmb()	asm volatile("lfence":::"memory")
138226c540SAlexander Gordeev #define wmb()	asm volatile("sfence":::"memory")
148226c540SAlexander Gordeev 
15*53776986SRoman Kagan #define smp_mb()	mb()
16*53776986SRoman Kagan #define smp_rmb()	barrier()
17*53776986SRoman Kagan #define smp_wmb()	barrier()
18*53776986SRoman Kagan 
198226c540SAlexander Gordeev #endif
20