diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2015-01-06 07:32:17 -0500 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2015-01-13 08:23:45 -0500 |
commit | 7185820a0ab27f88343ff5f75be5e963c8e19113 (patch) | |
tree | 4a0ada26d889806d2bf271b88b4fd7007a81a5d8 /arch/sparc/include/asm | |
parent | 8ccf7b2599abd08ab3a51d5f2299e301daae0860 (diff) |
sparc64: uaccess_64 macro whitespace fixes
Macros within arch/sparc/include/asm/uaccess_64.h are made harder to
read because they violate a bunch of coding style rules.
Fix it up.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/include/asm')
-rw-r--r-- | arch/sparc/include/asm/uaccess_64.h | 248 |
1 files changed, 144 insertions, 104 deletions
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h index b80866d90768..12d95947636b 100644 --- a/arch/sparc/include/asm/uaccess_64.h +++ b/arch/sparc/include/asm/uaccess_64.h | |||
@@ -41,11 +41,11 @@ | |||
41 | #define get_fs() ((mm_segment_t){(current_thread_info()->current_ds)}) | 41 | #define get_fs() ((mm_segment_t){(current_thread_info()->current_ds)}) |
42 | #define get_ds() (KERNEL_DS) | 42 | #define get_ds() (KERNEL_DS) |
43 | 43 | ||
44 | #define segment_eq(a,b) ((a).seg == (b).seg) | 44 | #define segment_eq(a, b) ((a).seg == (b).seg) |
45 | 45 | ||
46 | #define set_fs(val) \ | 46 | #define set_fs(val) \ |
47 | do { \ | 47 | do { \ |
48 | current_thread_info()->current_ds =(val).seg; \ | 48 | current_thread_info()->current_ds = (val).seg; \ |
49 | __asm__ __volatile__ ("wr %%g0, %0, %%asi" : : "r" ((val).seg)); \ | 49 | __asm__ __volatile__ ("wr %%g0, %0, %%asi" : : "r" ((val).seg)); \ |
50 | } while(0) | 50 | } while(0) |
51 | 51 | ||
@@ -88,121 +88,161 @@ void __retl_efault(void); | |||
88 | * of a performance impact. Thus we have a few rather ugly macros here, | 88 | * of a performance impact. Thus we have a few rather ugly macros here, |
89 | * and hide all the ugliness from the user. | 89 | * and hide all the ugliness from the user. |
90 | */ | 90 | */ |
91 | #define put_user(x,ptr) ({ \ | 91 | #define put_user(x, ptr) ({ \ |
92 | unsigned long __pu_addr = (unsigned long)(ptr); \ | 92 | unsigned long __pu_addr = (unsigned long)(ptr); \ |
93 | __chk_user_ptr(ptr); \ | 93 | __chk_user_ptr(ptr); \ |
94 | __put_user_nocheck((__typeof__(*(ptr)))(x),__pu_addr,sizeof(*(ptr))); }) | 94 | __put_user_nocheck((__typeof__(*(ptr)))(x), __pu_addr, sizeof(*(ptr)));\ |
95 | }) | ||
95 | 96 | ||
96 | #define get_user(x,ptr) ({ \ | 97 | #define get_user(x, ptr) ({ \ |
97 | unsigned long __gu_addr = (unsigned long)(ptr); \ | 98 | unsigned long __gu_addr = (unsigned long)(ptr); \ |
98 | __chk_user_ptr(ptr); \ | 99 | __chk_user_ptr(ptr); \ |
99 | __get_user_nocheck((x),__gu_addr,sizeof(*(ptr)),__typeof__(*(ptr))); }) | 100 | __get_user_nocheck((x), __gu_addr, sizeof(*(ptr)), __typeof__(*(ptr)));\ |
101 | }) | ||
100 | 102 | ||
101 | #define __put_user(x,ptr) put_user(x,ptr) | 103 | #define __put_user(x, ptr) put_user(x, ptr) |
102 | #define __get_user(x,ptr) get_user(x,ptr) | 104 | #define __get_user(x, ptr) get_user(x, ptr) |
103 | 105 | ||
104 | struct __large_struct { unsigned long buf[100]; }; | 106 | struct __large_struct { unsigned long buf[100]; }; |
105 | #define __m(x) ((struct __large_struct *)(x)) | 107 | #define __m(x) ((struct __large_struct *)(x)) |
106 | 108 | ||
107 | #define __put_user_nocheck(data,addr,size) ({ \ | 109 | #define __put_user_nocheck(data, addr, size) ({ \ |
108 | register int __pu_ret; \ | 110 | register int __pu_ret; \ |
109 | switch (size) { \ | 111 | switch (size) { \ |
110 | case 1: __put_user_asm(data,b,addr,__pu_ret); break; \ | 112 | case 1: \ |
111 | case 2: __put_user_asm(data,h,addr,__pu_ret); break; \ | 113 | __put_user_asm(data, b, addr, __pu_ret); \ |
112 | case 4: __put_user_asm(data,w,addr,__pu_ret); break; \ | 114 | break; \ |
113 | case 8: __put_user_asm(data,x,addr,__pu_ret); break; \ | 115 | case 2: \ |
114 | default: __pu_ret = __put_user_bad(); break; \ | 116 | __put_user_asm(data, h, addr, __pu_ret); \ |
115 | } __pu_ret; }) | 117 | break; \ |
116 | 118 | case 4: \ | |
117 | #define __put_user_asm(x,size,addr,ret) \ | 119 | __put_user_asm(data, w, addr, __pu_ret); \ |
120 | break; \ | ||
121 | case 8: \ | ||
122 | __put_user_asm(data, x, addr, __pu_ret); \ | ||
123 | break; \ | ||
124 | default: \ | ||
125 | __pu_ret = __put_user_bad(); \ | ||
126 | break; \ | ||
127 | } \ | ||
128 | __pu_ret; \ | ||
129 | }) | ||
130 | |||
131 | #define __put_user_asm(x, size, addr, ret) \ | ||
118 | __asm__ __volatile__( \ | 132 | __asm__ __volatile__( \ |
119 | "/* Put user asm, inline. */\n" \ | 133 | "/* Put user asm, inline. */\n" \ |
120 | "1:\t" "st"#size "a %1, [%2] %%asi\n\t" \ | 134 | "1:\t" "st"#size "a %1, [%2] %%asi\n\t" \ |
121 | "clr %0\n" \ | 135 | "clr %0\n" \ |
122 | "2:\n\n\t" \ | 136 | "2:\n\n\t" \ |
123 | ".section .fixup,#alloc,#execinstr\n\t" \ | 137 | ".section .fixup,#alloc,#execinstr\n\t" \ |
124 | ".align 4\n" \ | 138 | ".align 4\n" \ |
125 | "3:\n\t" \ | 139 | "3:\n\t" \ |
126 | "sethi %%hi(2b), %0\n\t" \ | 140 | "sethi %%hi(2b), %0\n\t" \ |
127 | "jmpl %0 + %%lo(2b), %%g0\n\t" \ | 141 | "jmpl %0 + %%lo(2b), %%g0\n\t" \ |
128 | " mov %3, %0\n\n\t" \ | 142 | " mov %3, %0\n\n\t" \ |
129 | ".previous\n\t" \ | 143 | ".previous\n\t" \ |
130 | ".section __ex_table,\"a\"\n\t" \ | 144 | ".section __ex_table,\"a\"\n\t" \ |
131 | ".align 4\n\t" \ | 145 | ".align 4\n\t" \ |
132 | ".word 1b, 3b\n\t" \ | 146 | ".word 1b, 3b\n\t" \ |
133 | ".previous\n\n\t" \ | 147 | ".previous\n\n\t" \ |
134 | : "=r" (ret) : "r" (x), "r" (__m(addr)), \ | 148 | : "=r" (ret) : "r" (x), "r" (__m(addr)), \ |
135 | "i" (-EFAULT)) | 149 | "i" (-EFAULT)) |
136 | 150 | ||
137 | int __put_user_bad(void); | 151 | int __put_user_bad(void); |
138 | 152 | ||
139 | #define __get_user_nocheck(data,addr,size,type) ({ \ | 153 | #define __get_user_nocheck(data, addr, size, type) ({ \ |
140 | register int __gu_ret; \ | 154 | register int __gu_ret; \ |
141 | register unsigned long __gu_val; \ | 155 | register unsigned long __gu_val; \ |
142 | switch (size) { \ | 156 | switch (size) { \ |
143 | case 1: __get_user_asm(__gu_val,ub,addr,__gu_ret); break; \ | 157 | case 1: \ |
144 | case 2: __get_user_asm(__gu_val,uh,addr,__gu_ret); break; \ | 158 | __get_user_asm(__gu_val, ub, addr, __gu_ret); \ |
145 | case 4: __get_user_asm(__gu_val,uw,addr,__gu_ret); break; \ | 159 | break; \ |
146 | case 8: __get_user_asm(__gu_val,x,addr,__gu_ret); break; \ | 160 | case 2: \ |
147 | default: __gu_val = 0; __gu_ret = __get_user_bad(); break; \ | 161 | __get_user_asm(__gu_val, uh, addr, __gu_ret); \ |
148 | } data = (__force type) __gu_val; __gu_ret; }) | 162 | break; \ |
149 | 163 | case 4: \ | |
150 | #define __get_user_nocheck_ret(data,addr,size,type,retval) ({ \ | 164 | __get_user_asm(__gu_val, uw, addr, __gu_ret); \ |
151 | register unsigned long __gu_val __asm__ ("l1"); \ | 165 | break; \ |
152 | switch (size) { \ | 166 | case 8: \ |
153 | case 1: __get_user_asm_ret(__gu_val,ub,addr,retval); break; \ | 167 | __get_user_asm(__gu_val, x, addr, __gu_ret); \ |
154 | case 2: __get_user_asm_ret(__gu_val,uh,addr,retval); break; \ | 168 | break; \ |
155 | case 4: __get_user_asm_ret(__gu_val,uw,addr,retval); break; \ | 169 | default: \ |
156 | case 8: __get_user_asm_ret(__gu_val,x,addr,retval); break; \ | 170 | __gu_val = 0; \ |
157 | default: if (__get_user_bad()) return retval; \ | 171 | __gu_ret = __get_user_bad(); \ |
158 | } data = (__force type) __gu_val; }) | 172 | break; \ |
159 | 173 | } \ | |
160 | #define __get_user_asm(x,size,addr,ret) \ | 174 | data = (__force type) __gu_val; \ |
175 | __gu_ret; \ | ||
176 | }) | ||
177 | |||
178 | #define __get_user_nocheck_ret(data, addr, size, type, retval) ({ \ | ||
179 | register unsigned long __gu_val __asm__ ("l1"); \ | ||
180 | switch (size) { \ | ||
181 | case 1: \ | ||
182 | __get_user_asm_ret(__gu_val, ub, addr, retval); \ | ||
183 | break; \ | ||
184 | case 2: \ | ||
185 | __get_user_asm_ret(__gu_val, uh, addr, retval); \ | ||
186 | break; \ | ||
187 | case 4: \ | ||
188 | __get_user_asm_ret(__gu_val, uw, addr, retval); \ | ||
189 | break; \ | ||
190 | case 8: \ | ||
191 | __get_user_asm_ret(__gu_val, x, addr, retval); \ | ||
192 | break; \ | ||
193 | default: \ | ||
194 | if (__get_user_bad()) \ | ||
195 | return retval; \ | ||
196 | } \ | ||
197 | data = (__force type) __gu_val; \ | ||
198 | }) | ||
199 | |||
200 | #define __get_user_asm(x, size, addr, ret) \ | ||
161 | __asm__ __volatile__( \ | 201 | __asm__ __volatile__( \ |
162 | "/* Get user asm, inline. */\n" \ | 202 | "/* Get user asm, inline. */\n" \ |
163 | "1:\t" "ld"#size "a [%2] %%asi, %1\n\t" \ | 203 | "1:\t" "ld"#size "a [%2] %%asi, %1\n\t" \ |
164 | "clr %0\n" \ | 204 | "clr %0\n" \ |
165 | "2:\n\n\t" \ | 205 | "2:\n\n\t" \ |
166 | ".section .fixup,#alloc,#execinstr\n\t" \ | 206 | ".section .fixup,#alloc,#execinstr\n\t" \ |
167 | ".align 4\n" \ | 207 | ".align 4\n" \ |
168 | "3:\n\t" \ | 208 | "3:\n\t" \ |
169 | "sethi %%hi(2b), %0\n\t" \ | 209 | "sethi %%hi(2b), %0\n\t" \ |
170 | "clr %1\n\t" \ | 210 | "clr %1\n\t" \ |
171 | "jmpl %0 + %%lo(2b), %%g0\n\t" \ | 211 | "jmpl %0 + %%lo(2b), %%g0\n\t" \ |
172 | " mov %3, %0\n\n\t" \ | 212 | " mov %3, %0\n\n\t" \ |
173 | ".previous\n\t" \ | 213 | ".previous\n\t" \ |
174 | ".section __ex_table,\"a\"\n\t" \ | 214 | ".section __ex_table,\"a\"\n\t" \ |
175 | ".align 4\n\t" \ | 215 | ".align 4\n\t" \ |
176 | ".word 1b, 3b\n\n\t" \ | 216 | ".word 1b, 3b\n\n\t" \ |
177 | ".previous\n\t" \ | 217 | ".previous\n\t" \ |
178 | : "=r" (ret), "=r" (x) : "r" (__m(addr)), \ | 218 | : "=r" (ret), "=r" (x) : "r" (__m(addr)), \ |
179 | "i" (-EFAULT)) | 219 | "i" (-EFAULT)) |
180 | 220 | ||
181 | #define __get_user_asm_ret(x,size,addr,retval) \ | 221 | #define __get_user_asm_ret(x, size, addr, retval) \ |
182 | if (__builtin_constant_p(retval) && retval == -EFAULT) \ | 222 | if (__builtin_constant_p(retval) && retval == -EFAULT) \ |
183 | __asm__ __volatile__( \ | 223 | __asm__ __volatile__( \ |
184 | "/* Get user asm ret, inline. */\n" \ | 224 | "/* Get user asm ret, inline. */\n" \ |
185 | "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \ | 225 | "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \ |
186 | ".section __ex_table,\"a\"\n\t" \ | 226 | ".section __ex_table,\"a\"\n\t" \ |
187 | ".align 4\n\t" \ | 227 | ".align 4\n\t" \ |
188 | ".word 1b,__ret_efault\n\n\t" \ | 228 | ".word 1b,__ret_efault\n\n\t" \ |
189 | ".previous\n\t" \ | 229 | ".previous\n\t" \ |
190 | : "=r" (x) : "r" (__m(addr))); \ | 230 | : "=r" (x) : "r" (__m(addr))); \ |
191 | else \ | 231 | else \ |
192 | __asm__ __volatile__( \ | 232 | __asm__ __volatile__( \ |
193 | "/* Get user asm ret, inline. */\n" \ | 233 | "/* Get user asm ret, inline. */\n" \ |
194 | "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \ | 234 | "1:\t" "ld"#size "a [%1] %%asi, %0\n\n\t" \ |
195 | ".section .fixup,#alloc,#execinstr\n\t" \ | 235 | ".section .fixup,#alloc,#execinstr\n\t" \ |
196 | ".align 4\n" \ | 236 | ".align 4\n" \ |
197 | "3:\n\t" \ | 237 | "3:\n\t" \ |
198 | "ret\n\t" \ | 238 | "ret\n\t" \ |
199 | " restore %%g0, %2, %%o0\n\n\t" \ | 239 | " restore %%g0, %2, %%o0\n\n\t" \ |
200 | ".previous\n\t" \ | 240 | ".previous\n\t" \ |
201 | ".section __ex_table,\"a\"\n\t" \ | 241 | ".section __ex_table,\"a\"\n\t" \ |
202 | ".align 4\n\t" \ | 242 | ".align 4\n\t" \ |
203 | ".word 1b, 3b\n\n\t" \ | 243 | ".word 1b, 3b\n\n\t" \ |
204 | ".previous\n\t" \ | 244 | ".previous\n\t" \ |
205 | : "=r" (x) : "r" (__m(addr)), "i" (retval)) | 245 | : "=r" (x) : "r" (__m(addr)), "i" (retval)) |
206 | 246 | ||
207 | int __get_user_bad(void); | 247 | int __get_user_bad(void); |
208 | 248 | ||