|
146 | 146 |
|
147 | 147 | #ifdef CONFIG_USE_X86_SEG_SUPPORT
|
148 | 148 |
|
149 |
| -#define __raw_cpu_read(qual, pcp) \ |
| 149 | +#define __raw_cpu_read(size, qual, pcp) \ |
150 | 150 | ({ \
|
151 | 151 | *(qual __my_cpu_type(pcp) *)__my_cpu_ptr(&(pcp)); \
|
152 | 152 | })
|
153 | 153 |
|
154 |
| -#define __raw_cpu_write(qual, pcp, val) \ |
| 154 | +#define __raw_cpu_write(size, qual, pcp, val) \ |
155 | 155 | do { \
|
156 | 156 | *(qual __my_cpu_type(pcp) *)__my_cpu_ptr(&(pcp)) = (val); \
|
157 | 157 | } while (0)
|
158 | 158 |
|
159 | 159 | #else /* CONFIG_USE_X86_SEG_SUPPORT */
|
160 | 160 |
|
161 |
| -#define percpu_from_op(size, qual, op, _var) \ |
| 161 | +#define __raw_cpu_read(size, qual, _var) \ |
162 | 162 | ({ \
|
163 | 163 | __pcpu_type_##size pfo_val__; \
|
164 |
| - asm qual (__pcpu_op2_##size(op, __percpu_arg([var]), "%[val]") \ |
| 164 | + asm qual (__pcpu_op2_##size("mov", __percpu_arg([var]), "%[val]") \ |
165 | 165 | : [val] __pcpu_reg_##size("=", pfo_val__) \
|
166 | 166 | : [var] "m" (__my_cpu_var(_var))); \
|
167 | 167 | (typeof(_var))(unsigned long) pfo_val__; \
|
168 | 168 | })
|
169 | 169 |
|
170 |
| -#define percpu_to_op(size, qual, op, _var, _val) \ |
| 170 | +#define __raw_cpu_write(size, qual, _var, _val) \ |
171 | 171 | do { \
|
172 | 172 | __pcpu_type_##size pto_val__ = __pcpu_cast_##size(_val); \
|
173 | 173 | if (0) { \
|
174 | 174 | typeof(_var) pto_tmp__; \
|
175 | 175 | pto_tmp__ = (_val); \
|
176 | 176 | (void)pto_tmp__; \
|
177 | 177 | } \
|
178 |
| - asm qual(__pcpu_op2_##size(op, "%[val]", __percpu_arg([var])) \ |
| 178 | + asm qual(__pcpu_op2_##size("mov", "%[val]", __percpu_arg([var])) \ |
179 | 179 | : [var] "+m" (__my_cpu_var(_var)) \
|
180 | 180 | : [val] __pcpu_reg_imm_##size(pto_val__)); \
|
181 | 181 | } while (0)
|
@@ -448,54 +448,32 @@ do { \
|
448 | 448 | */
|
449 | 449 | #define this_cpu_read_stable(pcp) __pcpu_size_call_return(this_cpu_read_stable_, pcp)
|
450 | 450 |
|
451 |
| -#ifdef CONFIG_USE_X86_SEG_SUPPORT |
452 |
| -#define raw_cpu_read_1(pcp) __raw_cpu_read(, pcp) |
453 |
| -#define raw_cpu_read_2(pcp) __raw_cpu_read(, pcp) |
454 |
| -#define raw_cpu_read_4(pcp) __raw_cpu_read(, pcp) |
455 |
| -#define raw_cpu_write_1(pcp, val) __raw_cpu_write(, pcp, val) |
456 |
| -#define raw_cpu_write_2(pcp, val) __raw_cpu_write(, pcp, val) |
457 |
| -#define raw_cpu_write_4(pcp, val) __raw_cpu_write(, pcp, val) |
458 |
| - |
459 |
| -#define this_cpu_read_1(pcp) __raw_cpu_read(volatile, pcp) |
460 |
| -#define this_cpu_read_2(pcp) __raw_cpu_read(volatile, pcp) |
461 |
| -#define this_cpu_read_4(pcp) __raw_cpu_read(volatile, pcp) |
462 |
| -#define this_cpu_write_1(pcp, val) __raw_cpu_write(volatile, pcp, val) |
463 |
| -#define this_cpu_write_2(pcp, val) __raw_cpu_write(volatile, pcp, val) |
464 |
| -#define this_cpu_write_4(pcp, val) __raw_cpu_write(volatile, pcp, val) |
| 451 | +#define raw_cpu_read_1(pcp) __raw_cpu_read(1, , pcp) |
| 452 | +#define raw_cpu_read_2(pcp) __raw_cpu_read(2, , pcp) |
| 453 | +#define raw_cpu_read_4(pcp) __raw_cpu_read(4, , pcp) |
| 454 | +#define raw_cpu_write_1(pcp, val) __raw_cpu_write(1, , pcp, val) |
| 455 | +#define raw_cpu_write_2(pcp, val) __raw_cpu_write(2, , pcp, val) |
| 456 | +#define raw_cpu_write_4(pcp, val) __raw_cpu_write(4, , pcp, val) |
| 457 | + |
| 458 | +#define this_cpu_read_1(pcp) __raw_cpu_read(1, volatile, pcp) |
| 459 | +#define this_cpu_read_2(pcp) __raw_cpu_read(2, volatile, pcp) |
| 460 | +#define this_cpu_read_4(pcp) __raw_cpu_read(4, volatile, pcp) |
| 461 | +#define this_cpu_write_1(pcp, val) __raw_cpu_write(1, volatile, pcp, val) |
| 462 | +#define this_cpu_write_2(pcp, val) __raw_cpu_write(2, volatile, pcp, val) |
| 463 | +#define this_cpu_write_4(pcp, val) __raw_cpu_write(4, volatile, pcp, val) |
465 | 464 |
|
466 | 465 | #ifdef CONFIG_X86_64
|
467 |
| -#define raw_cpu_read_8(pcp) __raw_cpu_read(, pcp) |
468 |
| -#define raw_cpu_write_8(pcp, val) __raw_cpu_write(, pcp, val) |
| 466 | +#define raw_cpu_read_8(pcp) __raw_cpu_read(8, , pcp) |
| 467 | +#define raw_cpu_write_8(pcp, val) __raw_cpu_write(8, , pcp, val) |
469 | 468 |
|
470 |
| -#define this_cpu_read_8(pcp) __raw_cpu_read(volatile, pcp) |
471 |
| -#define this_cpu_write_8(pcp, val) __raw_cpu_write(volatile, pcp, val) |
| 469 | +#define this_cpu_read_8(pcp) __raw_cpu_read(8, volatile, pcp) |
| 470 | +#define this_cpu_write_8(pcp, val) __raw_cpu_write(8, volatile, pcp, val) |
472 | 471 | #endif
|
473 | 472 |
|
474 |
| -#define this_cpu_read_const(pcp) __raw_cpu_read(, pcp) |
| 473 | +#ifdef CONFIG_USE_X86_SEG_SUPPORT |
| 474 | +#define this_cpu_read_const(pcp) __raw_cpu_read(, , pcp) |
475 | 475 | #else /* CONFIG_USE_X86_SEG_SUPPORT */
|
476 | 476 |
|
477 |
| -#define raw_cpu_read_1(pcp) percpu_from_op(1, , "mov", pcp) |
478 |
| -#define raw_cpu_read_2(pcp) percpu_from_op(2, , "mov", pcp) |
479 |
| -#define raw_cpu_read_4(pcp) percpu_from_op(4, , "mov", pcp) |
480 |
| -#define raw_cpu_write_1(pcp, val) percpu_to_op(1, , "mov", (pcp), val) |
481 |
| -#define raw_cpu_write_2(pcp, val) percpu_to_op(2, , "mov", (pcp), val) |
482 |
| -#define raw_cpu_write_4(pcp, val) percpu_to_op(4, , "mov", (pcp), val) |
483 |
| - |
484 |
| -#define this_cpu_read_1(pcp) percpu_from_op(1, volatile, "mov", pcp) |
485 |
| -#define this_cpu_read_2(pcp) percpu_from_op(2, volatile, "mov", pcp) |
486 |
| -#define this_cpu_read_4(pcp) percpu_from_op(4, volatile, "mov", pcp) |
487 |
| -#define this_cpu_write_1(pcp, val) percpu_to_op(1, volatile, "mov", (pcp), val) |
488 |
| -#define this_cpu_write_2(pcp, val) percpu_to_op(2, volatile, "mov", (pcp), val) |
489 |
| -#define this_cpu_write_4(pcp, val) percpu_to_op(4, volatile, "mov", (pcp), val) |
490 |
| - |
491 |
| -#ifdef CONFIG_X86_64 |
492 |
| -#define raw_cpu_read_8(pcp) percpu_from_op(8, , "mov", pcp) |
493 |
| -#define raw_cpu_write_8(pcp, val) percpu_to_op(8, , "mov", (pcp), val) |
494 |
| - |
495 |
| -#define this_cpu_read_8(pcp) percpu_from_op(8, volatile, "mov", pcp) |
496 |
| -#define this_cpu_write_8(pcp, val) percpu_to_op(8, volatile, "mov", (pcp), val) |
497 |
| -#endif |
498 |
| - |
499 | 477 | /*
|
500 | 478 | * The generic per-cpu infrastrucutre is not suitable for
|
501 | 479 | * reading const-qualified variables.
|
|
0 commit comments