commit | 171699f7630c92d0a928f83e5fb3aeabe35398c0 | [log] [tgz] |
---|---|---|
author | Ross Zwisler <ross.zwisler@linux.intel.com> | Wed Feb 26 12:06:49 2014 -0700 |
committer | H. Peter Anvin <hpa@linux.intel.com> | Thu Feb 27 08:23:28 2014 -0800 |
tree | eab1cdc0b44666d92f391d345b5f2d668e4138d0 | |
parent | c2bc11f10a39527cd1bb252097b5525664560956 [diff] [blame] |
x86: Add support for the clflushopt instruction Add support for the new clflushopt instruction. This instruction was announced in the document "Intel Architecture Instruction Set Extensions Programming Reference" with Ref # 319433-018. http://download-software.intel.com/sites/default/files/managed/50/1a/319433-018.pdf [ hpa: changed the feature flag to simply X86_FEATURE_CLFLUSHOPT - if that is what we want to report in /proc/cpuinfo anyway... ] Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com> Link: http://lkml.kernel.org/r/1393441612-19729-2-git-send-email-ross.zwisler@linux.intel.com Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
diff --git a/arch/x86/include/asm/special_insns.h b/arch/x86/include/asm/special_insns.h index 645cad2..e820c08 100644 --- a/arch/x86/include/asm/special_insns.h +++ b/arch/x86/include/asm/special_insns.h
@@ -191,6 +191,14 @@ asm volatile("clflush %0" : "+m" (*(volatile char __force *)__p)); } +static inline void clflushopt(volatile void *__p) +{ + alternative_io(".byte " __stringify(NOP_DS_PREFIX) "; clflush %P0", + ".byte 0x66; clflush %P0", + X86_FEATURE_CLFLUSHOPT, + "+m" (*(volatile char __force *)__p)); +} + #define nop() asm volatile ("nop")