aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86/system.h')
-rw-r--r--include/asm-x86/system.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h
index 6c7d1fda4995..39474f2957a3 100644
--- a/include/asm-x86/system.h
+++ b/include/asm-x86/system.h
@@ -5,6 +5,7 @@
5#include <asm/segment.h> 5#include <asm/segment.h>
6#include <asm/cpufeature.h> 6#include <asm/cpufeature.h>
7#include <asm/cmpxchg.h> 7#include <asm/cmpxchg.h>
8#include <asm/nops.h>
8 9
9#include <linux/kernel.h> 10#include <linux/kernel.h>
10#include <linux/irqflags.h> 11#include <linux/irqflags.h>
@@ -395,5 +396,17 @@ void default_idle(void);
395#define set_mb(var, value) do { var = value; barrier(); } while (0) 396#define set_mb(var, value) do { var = value; barrier(); } while (0)
396#endif 397#endif
397 398
399/*
400 * Stop RDTSC speculation. This is needed when you need to use RDTSC
401 * (or get_cycles or vread that possibly accesses the TSC) in a defined
402 * code region.
403 *
404 * (Could use an alternative three way for this if there was one.)
405 */
406static inline void rdtsc_barrier(void)
407{
408 alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC);
409 alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC);
410}
398 411
399#endif 412#endif