123456789101112131415161718192021222324252627 |
- #ifndef _ASM_X86_BARRIER_H_
- #define _ASM_X86_BARRIER_H_
- /*
- * Copyright (C) 2016, Red Hat Inc, Alexander Gordeev <agordeev@redhat.com>
- *
- * This work is licensed under the terms of the GNU LGPL, version 2.
- */
- #define mb() asm volatile("mfence":::"memory")
- #define rmb() asm volatile("lfence":::"memory")
- #define wmb() asm volatile("sfence":::"memory")
- #define smp_rmb() barrier()
- #define smp_wmb() barrier()
- /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
- static inline void rep_nop(void)
- {
- asm volatile("rep; nop" ::: "memory");
- }
- static inline void cpu_relax(void)
- {
- rep_nop();
- }
- #endif
|