]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/asm: Use CLFLUSHOPT and CLWB mnemonics in <asm/special_insns.h>
authorUros Bizjak <ubizjak@gmail.com>
Thu, 13 Mar 2025 10:26:55 +0000 (11:26 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 19 Mar 2025 10:26:58 +0000 (11:26 +0100)
Current minimum required version of binutils is 2.25,
which supports CLFLUSHOPT and CLWB instruction mnemonics.

Replace the byte-wise specification of CLFLUSHOPT and
CLWB with these proper mnemonics.

No functional change intended.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: https://lore.kernel.org/r/20250313102715.333142-1-ubizjak@gmail.com
arch/x86/include/asm/special_insns.h

index 21ce480658b14b27aaf4f10832a92d1e3aa3c28e..9b10bd102d3d8aa333e98ecea77f112d2c61fd33 100644 (file)
@@ -176,9 +176,8 @@ static __always_inline void clflush(volatile void *__p)
 
 static inline void clflushopt(volatile void *__p)
 {
-       alternative_io(".byte 0x3e; clflush %0",
-                      ".byte 0x66; clflush %0",
-                      X86_FEATURE_CLFLUSHOPT,
+       alternative_io("ds clflush %0",
+                      "clflushopt %0", X86_FEATURE_CLFLUSHOPT,
                       "+m" (*(volatile char __force *)__p));
 }
 
@@ -187,13 +186,10 @@ static inline void clwb(volatile void *__p)
        volatile struct { char x[64]; } *p = __p;
 
        asm volatile(ALTERNATIVE_2(
-               ".byte 0x3e; clflush (%[pax])",
-               ".byte 0x66; clflush (%[pax])", /* clflushopt (%%rax) */
-               X86_FEATURE_CLFLUSHOPT,
-               ".byte 0x66, 0x0f, 0xae, 0x30",  /* clwb (%%rax) */
-               X86_FEATURE_CLWB)
-               : [p] "+m" (*p)
-               : [pax] "a" (p));
+               "ds clflush %0",
+               "clflushopt %0", X86_FEATURE_CLFLUSHOPT,
+               "clwb %0", X86_FEATURE_CLWB)
+               : "+m" (*p));
 }
 
 #ifdef CONFIG_X86_USER_SHADOW_STACK