|
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