.. | .. |
---|
5 | 5 | #include <linux/compiler.h> |
---|
6 | 6 | #include <linux/threads.h> |
---|
7 | 7 | #include <linux/percpu-defs.h> |
---|
8 | | -#include <linux/irqflags.h> |
---|
9 | 8 | |
---|
10 | 9 | #ifdef CONFIG_SMP |
---|
11 | 10 | |
---|
.. | .. |
---|
63 | 62 | #define PER_CPU_ATTRIBUTES |
---|
64 | 63 | #endif |
---|
65 | 64 | |
---|
66 | | -#ifndef PER_CPU_DEF_ATTRIBUTES |
---|
67 | | -#define PER_CPU_DEF_ATTRIBUTES |
---|
68 | | -#endif |
---|
69 | | - |
---|
70 | 65 | #define raw_cpu_generic_read(pcp) \ |
---|
71 | 66 | ({ \ |
---|
72 | 67 | *raw_cpu_ptr(&(pcp)); \ |
---|
.. | .. |
---|
79 | 74 | |
---|
80 | 75 | #define raw_cpu_generic_add_return(pcp, val) \ |
---|
81 | 76 | ({ \ |
---|
82 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
---|
| 77 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
---|
83 | 78 | \ |
---|
84 | 79 | *__p += val; \ |
---|
85 | 80 | *__p; \ |
---|
.. | .. |
---|
87 | 82 | |
---|
88 | 83 | #define raw_cpu_generic_xchg(pcp, nval) \ |
---|
89 | 84 | ({ \ |
---|
90 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
---|
| 85 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
---|
91 | 86 | typeof(pcp) __ret; \ |
---|
92 | 87 | __ret = *__p; \ |
---|
93 | 88 | *__p = nval; \ |
---|
.. | .. |
---|
96 | 91 | |
---|
97 | 92 | #define raw_cpu_generic_cmpxchg(pcp, oval, nval) \ |
---|
98 | 93 | ({ \ |
---|
99 | | - typeof(&(pcp)) __p = raw_cpu_ptr(&(pcp)); \ |
---|
| 94 | + typeof(pcp) *__p = raw_cpu_ptr(&(pcp)); \ |
---|
100 | 95 | typeof(pcp) __ret; \ |
---|
101 | 96 | __ret = *__p; \ |
---|
102 | 97 | if (__ret == (oval)) \ |
---|
.. | .. |
---|
106 | 101 | |
---|
107 | 102 | #define raw_cpu_generic_cmpxchg_double(pcp1, pcp2, oval1, oval2, nval1, nval2) \ |
---|
108 | 103 | ({ \ |
---|
109 | | - typeof(&(pcp1)) __p1 = raw_cpu_ptr(&(pcp1)); \ |
---|
110 | | - typeof(&(pcp2)) __p2 = raw_cpu_ptr(&(pcp2)); \ |
---|
| 104 | + typeof(pcp1) *__p1 = raw_cpu_ptr(&(pcp1)); \ |
---|
| 105 | + typeof(pcp2) *__p2 = raw_cpu_ptr(&(pcp2)); \ |
---|
111 | 106 | int __ret = 0; \ |
---|
112 | 107 | if (*__p1 == (oval1) && *__p2 == (oval2)) { \ |
---|
113 | 108 | *__p1 = nval1; \ |
---|
.. | .. |
---|
119 | 114 | |
---|
120 | 115 | #define __this_cpu_generic_read_nopreempt(pcp) \ |
---|
121 | 116 | ({ \ |
---|
122 | | - typeof(pcp) __ret; \ |
---|
| 117 | + typeof(pcp) ___ret; \ |
---|
123 | 118 | preempt_disable_notrace(); \ |
---|
124 | | - __ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \ |
---|
| 119 | + ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \ |
---|
125 | 120 | preempt_enable_notrace(); \ |
---|
126 | | - __ret; \ |
---|
| 121 | + ___ret; \ |
---|
127 | 122 | }) |
---|
128 | 123 | |
---|
129 | 124 | #define __this_cpu_generic_read_noirq(pcp) \ |
---|
130 | 125 | ({ \ |
---|
131 | | - typeof(pcp) __ret; \ |
---|
132 | | - unsigned long __flags; \ |
---|
133 | | - raw_local_irq_save(__flags); \ |
---|
134 | | - __ret = raw_cpu_generic_read(pcp); \ |
---|
135 | | - raw_local_irq_restore(__flags); \ |
---|
136 | | - __ret; \ |
---|
| 126 | + typeof(pcp) ___ret; \ |
---|
| 127 | + unsigned long ___flags; \ |
---|
| 128 | + raw_local_irq_save(___flags); \ |
---|
| 129 | + ___ret = raw_cpu_generic_read(pcp); \ |
---|
| 130 | + raw_local_irq_restore(___flags); \ |
---|
| 131 | + ___ret; \ |
---|
137 | 132 | }) |
---|
138 | 133 | |
---|
139 | 134 | #define this_cpu_generic_read(pcp) \ |
---|