diff options
Diffstat (limited to 'include/asm-x86/system.h')
-rw-r--r-- | include/asm-x86/system.h | 13 |
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 | */ | ||
406 | static 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 |