Commit 9130ea06 authored by Ingo Molnar's avatar Ingo Molnar

x86/percpu: Clean up <asm/percpu.h> vertical alignment details

 - Fix/unify misc vertical alignment inconsistencies

 - Make CPP macros look a bit more like C code by adding
   an empty line after local variable declaration blocks,
   and before final rvalue statements.

No change in code.
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Cc: Uros Bizjak <ubizjak@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
parent 61d73e4f
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
#define arch_raw_cpu_ptr(_ptr) \ #define arch_raw_cpu_ptr(_ptr) \
({ \ ({ \
unsigned long tcp_ptr__ = raw_cpu_read_long(this_cpu_off); \ unsigned long tcp_ptr__ = raw_cpu_read_long(this_cpu_off); \
\
tcp_ptr__ += (__force unsigned long)(_ptr); \ tcp_ptr__ += (__force unsigned long)(_ptr); \
(typeof(*(_ptr)) __kernel __force *)tcp_ptr__; \ (typeof(*(_ptr)) __kernel __force *)tcp_ptr__; \
}) })
...@@ -166,15 +167,18 @@ do { \ ...@@ -166,15 +167,18 @@ do { \
#define __raw_cpu_read(size, qual, _var) \ #define __raw_cpu_read(size, qual, _var) \
({ \ ({ \
__pcpu_type_##size pfo_val__; \ __pcpu_type_##size pfo_val__; \
\
asm qual (__pcpu_op2_##size("mov", __percpu_arg([var]), "%[val]") \ asm qual (__pcpu_op2_##size("mov", __percpu_arg([var]), "%[val]") \
: [val] __pcpu_reg_##size("=", pfo_val__) \ : [val] __pcpu_reg_##size("=", pfo_val__) \
: [var] "m" (__my_cpu_var(_var))); \ : [var] "m" (__my_cpu_var(_var))); \
\
(typeof(_var))(unsigned long) pfo_val__; \ (typeof(_var))(unsigned long) pfo_val__; \
}) })
#define __raw_cpu_write(size, qual, _var, _val) \ #define __raw_cpu_write(size, qual, _var, _val) \
do { \ do { \
__pcpu_type_##size pto_val__ = __pcpu_cast_##size(_val); \ __pcpu_type_##size pto_val__ = __pcpu_cast_##size(_val); \
\
if (0) { \ if (0) { \
typeof(_var) pto_tmp__; \ typeof(_var) pto_tmp__; \
pto_tmp__ = (_val); \ pto_tmp__ = (_val); \
...@@ -196,9 +200,11 @@ do { \ ...@@ -196,9 +200,11 @@ do { \
#define __raw_cpu_read_stable(size, _var) \ #define __raw_cpu_read_stable(size, _var) \
({ \ ({ \
__pcpu_type_##size pfo_val__; \ __pcpu_type_##size pfo_val__; \
\
asm(__pcpu_op2_##size("mov", __force_percpu_arg(a[var]), "%[val]") \ asm(__pcpu_op2_##size("mov", __force_percpu_arg(a[var]), "%[val]") \
: [val] __pcpu_reg_##size("=", pfo_val__) \ : [val] __pcpu_reg_##size("=", pfo_val__) \
: [var] "i" (&(_var))); \ : [var] "i" (&(_var))); \
\
(typeof(_var))(unsigned long) pfo_val__; \ (typeof(_var))(unsigned long) pfo_val__; \
}) })
...@@ -211,6 +217,7 @@ do { \ ...@@ -211,6 +217,7 @@ do { \
#define percpu_binary_op(size, qual, op, _var, _val) \ #define percpu_binary_op(size, qual, op, _var, _val) \
do { \ do { \
__pcpu_type_##size pto_val__ = __pcpu_cast_##size(_val); \ __pcpu_type_##size pto_val__ = __pcpu_cast_##size(_val); \
\
if (0) { \ if (0) { \
typeof(_var) pto_tmp__; \ typeof(_var) pto_tmp__; \
pto_tmp__ = (_val); \ pto_tmp__ = (_val); \
...@@ -230,6 +237,7 @@ do { \ ...@@ -230,6 +237,7 @@ do { \
const int pao_ID__ = (__builtin_constant_p(val) && \ const int pao_ID__ = (__builtin_constant_p(val) && \
((val) == 1 || (val) == -1)) ? \ ((val) == 1 || (val) == -1)) ? \
(int)(val) : 0; \ (int)(val) : 0; \
\
if (0) { \ if (0) { \
typeof(var) pao_tmp__; \ typeof(var) pao_tmp__; \
pao_tmp__ = (val); \ pao_tmp__ = (val); \
...@@ -249,6 +257,7 @@ do { \ ...@@ -249,6 +257,7 @@ do { \
#define percpu_add_return_op(size, qual, _var, _val) \ #define percpu_add_return_op(size, qual, _var, _val) \
({ \ ({ \
__pcpu_type_##size paro_tmp__ = __pcpu_cast_##size(_val); \ __pcpu_type_##size paro_tmp__ = __pcpu_cast_##size(_val); \
\
asm qual (__pcpu_op2_##size("xadd", "%[tmp]", \ asm qual (__pcpu_op2_##size("xadd", "%[tmp]", \
__percpu_arg([var])) \ __percpu_arg([var])) \
: [tmp] __pcpu_reg_##size("+", paro_tmp__), \ : [tmp] __pcpu_reg_##size("+", paro_tmp__), \
...@@ -264,7 +273,9 @@ do { \ ...@@ -264,7 +273,9 @@ do { \
#define raw_percpu_xchg_op(_var, _nval) \ #define raw_percpu_xchg_op(_var, _nval) \
({ \ ({ \
typeof(_var) pxo_old__ = raw_cpu_read(_var); \ typeof(_var) pxo_old__ = raw_cpu_read(_var); \
\
raw_cpu_write(_var, _nval); \ raw_cpu_write(_var, _nval); \
\
pxo_old__; \ pxo_old__; \
}) })
...@@ -276,7 +287,9 @@ do { \ ...@@ -276,7 +287,9 @@ do { \
#define this_percpu_xchg_op(_var, _nval) \ #define this_percpu_xchg_op(_var, _nval) \
({ \ ({ \
typeof(_var) pxo_old__ = this_cpu_read(_var); \ typeof(_var) pxo_old__ = this_cpu_read(_var); \
\
do { } while (!this_cpu_try_cmpxchg(_var, &pxo_old__, _nval)); \ do { } while (!this_cpu_try_cmpxchg(_var, &pxo_old__, _nval)); \
\
pxo_old__; \ pxo_old__; \
}) })
...@@ -288,12 +301,14 @@ do { \ ...@@ -288,12 +301,14 @@ do { \
({ \ ({ \
__pcpu_type_##size pco_old__ = __pcpu_cast_##size(_oval); \ __pcpu_type_##size pco_old__ = __pcpu_cast_##size(_oval); \
__pcpu_type_##size pco_new__ = __pcpu_cast_##size(_nval); \ __pcpu_type_##size pco_new__ = __pcpu_cast_##size(_nval); \
\
asm qual (__pcpu_op2_##size("cmpxchg", "%[nval]", \ asm qual (__pcpu_op2_##size("cmpxchg", "%[nval]", \
__percpu_arg([var])) \ __percpu_arg([var])) \
: [oval] "+a" (pco_old__), \ : [oval] "+a" (pco_old__), \
[var] "+m" (__my_cpu_var(_var)) \ [var] "+m" (__my_cpu_var(_var)) \
: [nval] __pcpu_reg_##size(, pco_new__) \ : [nval] __pcpu_reg_##size(, pco_new__) \
: "memory"); \ : "memory"); \
\
(typeof(_var))(unsigned long) pco_old__; \ (typeof(_var))(unsigned long) pco_old__; \
}) })
...@@ -303,6 +318,7 @@ do { \ ...@@ -303,6 +318,7 @@ do { \
__pcpu_type_##size *pco_oval__ = (__pcpu_type_##size *)(_ovalp); \ __pcpu_type_##size *pco_oval__ = (__pcpu_type_##size *)(_ovalp); \
__pcpu_type_##size pco_old__ = *pco_oval__; \ __pcpu_type_##size pco_old__ = *pco_oval__; \
__pcpu_type_##size pco_new__ = __pcpu_cast_##size(_nval); \ __pcpu_type_##size pco_new__ = __pcpu_cast_##size(_nval); \
\
asm qual (__pcpu_op2_##size("cmpxchg", "%[nval]", \ asm qual (__pcpu_op2_##size("cmpxchg", "%[nval]", \
__percpu_arg([var])) \ __percpu_arg([var])) \
CC_SET(z) \ CC_SET(z) \
...@@ -313,6 +329,7 @@ do { \ ...@@ -313,6 +329,7 @@ do { \
: "memory"); \ : "memory"); \
if (unlikely(!success)) \ if (unlikely(!success)) \
*pco_oval__ = pco_old__; \ *pco_oval__ = pco_old__; \
\
likely(success); \ likely(success); \
}) })
...@@ -373,6 +390,7 @@ do { \ ...@@ -373,6 +390,7 @@ do { \
: "memory"); \ : "memory"); \
if (unlikely(!success)) \ if (unlikely(!success)) \
*_oval = old__.var; \ *_oval = old__.var; \
\
likely(success); \ likely(success); \
}) })
...@@ -520,6 +538,7 @@ do { \ ...@@ -520,6 +538,7 @@ do { \
* 32-bit kernels must fall back to generic operations. * 32-bit kernels must fall back to generic operations.
*/ */
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
#define raw_cpu_read_8(pcp) __raw_cpu_read(8, , pcp) #define raw_cpu_read_8(pcp) __raw_cpu_read(8, , pcp)
#define raw_cpu_write_8(pcp, val) __raw_cpu_write(8, , pcp, val) #define raw_cpu_write_8(pcp, val) __raw_cpu_write(8, , pcp, val)
...@@ -572,6 +591,7 @@ do { \ ...@@ -572,6 +591,7 @@ do { \
({ \ ({ \
unsigned long __percpu *addr__ = \ unsigned long __percpu *addr__ = \
(unsigned long __percpu *)&(_var) + ((_nr) / BITS_PER_LONG); \ (unsigned long __percpu *)&(_var) + ((_nr) / BITS_PER_LONG); \
\
!!((1UL << ((_nr) % BITS_PER_LONG)) & raw_cpu_read(*addr__)); \ !!((1UL << ((_nr) % BITS_PER_LONG)) & raw_cpu_read(*addr__)); \
}) })
...@@ -635,6 +655,7 @@ DECLARE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off); ...@@ -635,6 +655,7 @@ DECLARE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off);
#define early_per_cpu_ptr(_name) (_name##_early_ptr) #define early_per_cpu_ptr(_name) (_name##_early_ptr)
#define early_per_cpu_map(_name, _idx) (_name##_early_map[_idx]) #define early_per_cpu_map(_name, _idx) (_name##_early_map[_idx])
#define early_per_cpu(_name, _cpu) \ #define early_per_cpu(_name, _cpu) \
*(early_per_cpu_ptr(_name) ? \ *(early_per_cpu_ptr(_name) ? \
&early_per_cpu_ptr(_name)[_cpu] : \ &early_per_cpu_ptr(_name)[_cpu] : \
...@@ -660,6 +681,6 @@ DECLARE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off); ...@@ -660,6 +681,6 @@ DECLARE_PER_CPU_READ_MOSTLY(unsigned long, this_cpu_off);
#define early_per_cpu_ptr(_name) NULL #define early_per_cpu_ptr(_name) NULL
/* no early_per_cpu_map() */ /* no early_per_cpu_map() */
#endif /* CONFIG_SMP */ #endif /* !CONFIG_SMP */
#endif /* _ASM_X86_PERCPU_H */ #endif /* _ASM_X86_PERCPU_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment