summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2024-03-20 09:30:41 +0100
committerIngo Molnar <mingo@kernel.org>2024-03-20 12:29:17 +0100
commitce99b9c8daff3352a2ae0c72acf44e0663095fea (patch)
tree9fa4fcc2ebbb8bf484b23076cf85fb6b7ae0aae8 /arch
parent0539084639f3835c8d0b798e6659ec14a266b4f1 (diff)
downloadlinux-stable-ce99b9c8daff3352a2ae0c72acf44e0663095fea.tar.gz
linux-stable-ce99b9c8daff3352a2ae0c72acf44e0663095fea.tar.bz2
linux-stable-ce99b9c8daff3352a2ae0c72acf44e0663095fea.zip
x86/percpu: Move raw_percpu_xchg_op() to a better place
Move raw_percpu_xchg_op() together with this_percpu_xchg_op() and trivially rename some internal variables to harmonize them between macro implementations. No functional changes intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://lore.kernel.org/r/20240320083127.493250-2-ubizjak@gmail.com
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/include/asm/percpu.h23
1 files changed, 11 insertions, 12 deletions
diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
index de991e6d050a..7563e69838c4 100644
--- a/arch/x86/include/asm/percpu.h
+++ b/arch/x86/include/asm/percpu.h
@@ -230,6 +230,17 @@ do { \
})
/*
+ * raw_cpu_xchg() can use a load-store since
+ * it is not required to be IRQ-safe.
+ */
+#define raw_percpu_xchg_op(_var, _nval) \
+({ \
+ typeof(_var) pxo_old__ = raw_cpu_read(_var); \
+ raw_cpu_write(_var, _nval); \
+ pxo_old__; \
+})
+
+/*
* this_cpu_xchg() is implemented using cmpxchg without a lock prefix.
* xchg is expensive due to the implied lock prefix. The processor
* cannot prefetch cachelines if xchg is used.
@@ -499,18 +510,6 @@ do { \
#define raw_cpu_or_1(pcp, val) percpu_to_op(1, , "or", (pcp), val)
#define raw_cpu_or_2(pcp, val) percpu_to_op(2, , "or", (pcp), val)
#define raw_cpu_or_4(pcp, val) percpu_to_op(4, , "or", (pcp), val)
-
-/*
- * raw_cpu_xchg() can use a load-store since it is not required to be
- * IRQ-safe.
- */
-#define raw_percpu_xchg_op(var, nval) \
-({ \
- typeof(var) pxo_ret__ = raw_cpu_read(var); \
- raw_cpu_write(var, (nval)); \
- pxo_ret__; \
-})
-
#define raw_cpu_xchg_1(pcp, val) raw_percpu_xchg_op(pcp, val)
#define raw_cpu_xchg_2(pcp, val) raw_percpu_xchg_op(pcp, val)
#define raw_cpu_xchg_4(pcp, val) raw_percpu_xchg_op(pcp, val)