@@ -229,6 +229,17 @@ do { \
229
229
(typeof(_var))(unsigned long) (paro_tmp__ + _val); \
230
230
})
231
231
232
+ /*
233
+ * raw_cpu_xchg() can use a load-store since
234
+ * it is not required to be IRQ-safe.
235
+ */
236
+ #define raw_percpu_xchg_op (_var , _nval ) \
237
+ ({ \
238
+ typeof(_var) pxo_old__ = raw_cpu_read(_var); \
239
+ raw_cpu_write(_var, _nval); \
240
+ pxo_old__; \
241
+ })
242
+
232
243
/*
233
244
* this_cpu_xchg() is implemented using cmpxchg without a lock prefix.
234
245
* xchg is expensive due to the implied lock prefix. The processor
@@ -499,18 +510,6 @@ do { \
499
510
#define raw_cpu_or_1 (pcp , val ) percpu_to_op(1, , "or", (pcp), val)
500
511
#define raw_cpu_or_2 (pcp , val ) percpu_to_op(2, , "or", (pcp), val)
501
512
#define raw_cpu_or_4 (pcp , val ) percpu_to_op(4, , "or", (pcp), val)
502
-
503
- /*
504
- * raw_cpu_xchg() can use a load-store since it is not required to be
505
- * IRQ-safe.
506
- */
507
- #define raw_percpu_xchg_op (var , nval ) \
508
- ({ \
509
- typeof(var) pxo_ret__ = raw_cpu_read(var); \
510
- raw_cpu_write(var, (nval)); \
511
- pxo_ret__; \
512
- })
513
-
514
513
#define raw_cpu_xchg_1 (pcp , val ) raw_percpu_xchg_op(pcp, val)
515
514
#define raw_cpu_xchg_2 (pcp , val ) raw_percpu_xchg_op(pcp, val)
516
515
#define raw_cpu_xchg_4 (pcp , val ) raw_percpu_xchg_op(pcp, val)
0 commit comments