]> git.wh0rd.org Git - patches.git/blob - linux-ia64-asm-volatile-gcc-intrin.patch
initial import
[patches.git] / linux-ia64-asm-volatile-gcc-intrin.patch
1 diff --git a/include/asm-ia64/gcc_intrin.h b/include/asm-ia64/gcc_intrin.h
2 index 4fb4e43..0bb24df 100644
3 --- a/include/asm-ia64/gcc_intrin.h
4 +++ b/include/asm-ia64/gcc_intrin.h
5 @@ -13,41 +13,41 @@
6  
7  /* Optimization barrier */
8  /* The "volatile" is due to gcc bugs */
9 -#define ia64_barrier() asm volatile ("":::"memory")
10 +#define ia64_barrier() __asm__ __volatile__ ("":::"memory")
11  
12 -#define ia64_stop()    asm volatile (";;"::)
13 +#define ia64_stop()    __asm__ __volatile__ (";;"::)
14  
15 -#define ia64_invala_gr(regnum) asm volatile ("invala.e r%0" :: "i"(regnum))
16 +#define ia64_invala_gr(regnum) __asm__ __volatile__ ("invala.e r%0" :: "i"(regnum))
17  
18 -#define ia64_invala_fr(regnum) asm volatile ("invala.e f%0" :: "i"(regnum))
19 +#define ia64_invala_fr(regnum) __asm__ __volatile__ ("invala.e f%0" :: "i"(regnum))
20  
21  extern void ia64_bad_param_for_setreg (void);
22  extern void ia64_bad_param_for_getreg (void);
23  
24 -register unsigned long ia64_r13 asm ("r13") __attribute_used__;
25 +register unsigned long ia64_r13 __asm__ ("r13") __attribute_used__;
26  
27  #define ia64_setreg(regnum, val)                                               \
28  ({                                                                             \
29         switch (regnum) {                                                       \
30             case _IA64_REG_PSR_L:                                               \
31 -                   asm volatile ("mov psr.l=%0" :: "r"(val) : "memory");       \
32 +                   __asm__ __volatile__ ("mov psr.l=%0" :: "r"(val) : "memory");       \
33                     break;                                                      \
34             case _IA64_REG_AR_KR0 ... _IA64_REG_AR_EC:                          \
35 -                   asm volatile ("mov ar%0=%1" ::                              \
36 +                   __asm__ __volatile__ ("mov ar%0=%1" ::                              \
37                                           "i" (regnum - _IA64_REG_AR_KR0),      \
38                                           "r"(val): "memory");                  \
39                     break;                                                      \
40             case _IA64_REG_CR_DCR ... _IA64_REG_CR_LRR1:                        \
41 -                   asm volatile ("mov cr%0=%1" ::                              \
42 +                   __asm__ __volatile__ ("mov cr%0=%1" ::                              \
43                                           "i" (regnum - _IA64_REG_CR_DCR),      \
44                                           "r"(val): "memory" );                 \
45                     break;                                                      \
46             case _IA64_REG_SP:                                                  \
47 -                   asm volatile ("mov r12=%0" ::                               \
48 +                   __asm__ __volatile__ ("mov r12=%0" ::                               \
49                                           "r"(val): "memory");                  \
50                     break;                                                      \
51             case _IA64_REG_GP:                                                  \
52 -                   asm volatile ("mov gp=%0" :: "r"(val) : "memory");          \
53 +                   __asm__ __volatile__ ("mov gp=%0" :: "r"(val) : "memory");          \
54                 break;                                                          \
55             default:                                                            \
56                     ia64_bad_param_for_setreg();                                \
57 @@ -61,27 +61,27 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
58                                                                                 \
59         switch (regnum) {                                                       \
60         case _IA64_REG_GP:                                                      \
61 -               asm volatile ("mov %0=gp" : "=r"(ia64_intri_res));              \
62 +               __asm__ __volatile__ ("mov %0=gp" : "=r"(ia64_intri_res));              \
63                 break;                                                          \
64         case _IA64_REG_IP:                                                      \
65 -               asm volatile ("mov %0=ip" : "=r"(ia64_intri_res));              \
66 +               __asm__ __volatile__ ("mov %0=ip" : "=r"(ia64_intri_res));              \
67                 break;                                                          \
68         case _IA64_REG_PSR:                                                     \
69 -               asm volatile ("mov %0=psr" : "=r"(ia64_intri_res));             \
70 +               __asm__ __volatile__ ("mov %0=psr" : "=r"(ia64_intri_res));             \
71                 break;                                                          \
72         case _IA64_REG_TP:      /* for current() */                             \
73                 ia64_intri_res = ia64_r13;                                      \
74                 break;                                                          \
75         case _IA64_REG_AR_KR0 ... _IA64_REG_AR_EC:                              \
76 -               asm volatile ("mov %0=ar%1" : "=r" (ia64_intri_res)             \
77 +               __asm__ __volatile__ ("mov %0=ar%1" : "=r" (ia64_intri_res)             \
78                                       : "i"(regnum - _IA64_REG_AR_KR0));        \
79                 break;                                                          \
80         case _IA64_REG_CR_DCR ... _IA64_REG_CR_LRR1:                            \
81 -               asm volatile ("mov %0=cr%1" : "=r" (ia64_intri_res)             \
82 +               __asm__ __volatile__ ("mov %0=cr%1" : "=r" (ia64_intri_res)             \
83                                       : "i" (regnum - _IA64_REG_CR_DCR));       \
84                 break;                                                          \
85         case _IA64_REG_SP:                                                      \
86 -               asm volatile ("mov %0=sp" : "=r" (ia64_intri_res));             \
87 +               __asm__ __volatile__ ("mov %0=sp" : "=r" (ia64_intri_res));             \
88                 break;                                                          \
89         default:                                                                \
90                 ia64_bad_param_for_getreg();                                    \
91 @@ -96,7 +96,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
92  ({                                                             \
93         switch (mode) {                                         \
94         case ia64_hint_pause:                                   \
95 -               asm volatile ("hint @pause" ::: "memory");      \
96 +               __asm__ __volatile__ ("hint @pause" ::: "memory");      \
97                 break;                                          \
98         }                                                       \
99  })
100 @@ -115,19 +115,19 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
101                                                                                 \
102         switch (mode) {                                                         \
103         case ia64_mux1_brcst:                                                   \
104 -               asm ("mux1 %0=%1,@brcst" : "=r" (ia64_intri_res) : "r" (x));    \
105 +               __asm__ ("mux1 %0=%1,@brcst" : "=r" (ia64_intri_res) : "r" (x));        \
106                 break;                                                          \
107         case ia64_mux1_mix:                                                     \
108 -               asm ("mux1 %0=%1,@mix" : "=r" (ia64_intri_res) : "r" (x));      \
109 +               __asm__ ("mux1 %0=%1,@mix" : "=r" (ia64_intri_res) : "r" (x));  \
110                 break;                                                          \
111         case ia64_mux1_shuf:                                                    \
112 -               asm ("mux1 %0=%1,@shuf" : "=r" (ia64_intri_res) : "r" (x));     \
113 +               __asm__ ("mux1 %0=%1,@shuf" : "=r" (ia64_intri_res) : "r" (x)); \
114                 break;                                                          \
115         case ia64_mux1_alt:                                                     \
116 -               asm ("mux1 %0=%1,@alt" : "=r" (ia64_intri_res) : "r" (x));      \
117 +               __asm__ ("mux1 %0=%1,@alt" : "=r" (ia64_intri_res) : "r" (x));  \
118                 break;                                                          \
119         case ia64_mux1_rev:                                                     \
120 -               asm ("mux1 %0=%1,@rev" : "=r" (ia64_intri_res) : "r" (x));      \
121 +               __asm__ ("mux1 %0=%1,@rev" : "=r" (ia64_intri_res) : "r" (x));  \
122                 break;                                                          \
123         }                                                                       \
124         ia64_intri_res;                                                         \
125 @@ -139,7 +139,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
126  # define ia64_popcnt(x)                                                \
127    ({                                                           \
128         __u64 ia64_intri_res;                                   \
129 -       asm ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x)); \
130 +       __asm__ ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x));     \
131                                                                 \
132         ia64_intri_res;                                         \
133    })
134 @@ -149,7 +149,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
135  ({                                                             \
136         long ia64_intri_res;                                    \
137                                                                 \
138 -       asm ("getf.exp %0=%1" : "=r"(ia64_intri_res) : "f"(x)); \
139 +       __asm__ ("getf.exp %0=%1" : "=r"(ia64_intri_res) : "f"(x));     \
140                                                                 \
141         ia64_intri_res;                                         \
142  })
143 @@ -157,75 +157,75 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
144  #define ia64_shrp(a, b, count)                                                         \
145  ({                                                                                     \
146         __u64 ia64_intri_res;                                                           \
147 -       asm ("shrp %0=%1,%2,%3" : "=r"(ia64_intri_res) : "r"(a), "r"(b), "i"(count));   \
148 +       __asm__ ("shrp %0=%1,%2,%3" : "=r"(ia64_intri_res) : "r"(a), "r"(b), "i"(count));       \
149         ia64_intri_res;                                                                 \
150  })
151  
152  #define ia64_ldfs(regnum, x)                                   \
153  ({                                                             \
154 -       register double __f__ asm ("f"#regnum);                 \
155 -       asm volatile ("ldfs %0=[%1]" :"=f"(__f__): "r"(x));     \
156 +       register double __f__ __asm__ ("f"#regnum);                     \
157 +       __asm__ __volatile__ ("ldfs %0=[%1]" :"=f"(__f__): "r"(x));     \
158  })
159  
160  #define ia64_ldfd(regnum, x)                                   \
161  ({                                                             \
162 -       register double __f__ asm ("f"#regnum);                 \
163 -       asm volatile ("ldfd %0=[%1]" :"=f"(__f__): "r"(x));     \
164 +       register double __f__ __asm__ ("f"#regnum);                     \
165 +       __asm__ __volatile__ ("ldfd %0=[%1]" :"=f"(__f__): "r"(x));     \
166  })
167  
168  #define ia64_ldfe(regnum, x)                                   \
169  ({                                                             \
170 -       register double __f__ asm ("f"#regnum);                 \
171 -       asm volatile ("ldfe %0=[%1]" :"=f"(__f__): "r"(x));     \
172 +       register double __f__ __asm__ ("f"#regnum);                     \
173 +       __asm__ __volatile__ ("ldfe %0=[%1]" :"=f"(__f__): "r"(x));     \
174  })
175  
176  #define ia64_ldf8(regnum, x)                                   \
177  ({                                                             \
178 -       register double __f__ asm ("f"#regnum);                 \
179 -       asm volatile ("ldf8 %0=[%1]" :"=f"(__f__): "r"(x));     \
180 +       register double __f__ __asm__ ("f"#regnum);                     \
181 +       __asm__ __volatile__ ("ldf8 %0=[%1]" :"=f"(__f__): "r"(x));     \
182  })
183  
184  #define ia64_ldf_fill(regnum, x)                               \
185  ({                                                             \
186 -       register double __f__ asm ("f"#regnum);                 \
187 -       asm volatile ("ldf.fill %0=[%1]" :"=f"(__f__): "r"(x)); \
188 +       register double __f__ __asm__ ("f"#regnum);                     \
189 +       __asm__ __volatile__ ("ldf.fill %0=[%1]" :"=f"(__f__): "r"(x)); \
190  })
191  
192  #define ia64_stfs(x, regnum)                                           \
193  ({                                                                     \
194 -       register double __f__ asm ("f"#regnum);                         \
195 -       asm volatile ("stfs [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
196 +       register double __f__ __asm__ ("f"#regnum);                             \
197 +       __asm__ __volatile__ ("stfs [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
198  })
199  
200  #define ia64_stfd(x, regnum)                                           \
201  ({                                                                     \
202 -       register double __f__ asm ("f"#regnum);                         \
203 -       asm volatile ("stfd [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
204 +       register double __f__ __asm__ ("f"#regnum);                             \
205 +       __asm__ __volatile__ ("stfd [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
206  })
207  
208  #define ia64_stfe(x, regnum)                                           \
209  ({                                                                     \
210 -       register double __f__ asm ("f"#regnum);                         \
211 -       asm volatile ("stfe [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
212 +       register double __f__ __asm__ ("f"#regnum);                             \
213 +       __asm__ __volatile__ ("stfe [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
214  })
215  
216  #define ia64_stf8(x, regnum)                                           \
217  ({                                                                     \
218 -       register double __f__ asm ("f"#regnum);                         \
219 -       asm volatile ("stf8 [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
220 +       register double __f__ __asm__ ("f"#regnum);                             \
221 +       __asm__ __volatile__ ("stf8 [%0]=%1" :: "r"(x), "f"(__f__) : "memory"); \
222  })
223  
224  #define ia64_stf_spill(x, regnum)                                              \
225  ({                                                                             \
226 -       register double __f__ asm ("f"#regnum);                                 \
227 -       asm volatile ("stf.spill [%0]=%1" :: "r"(x), "f"(__f__) : "memory");    \
228 +       register double __f__ __asm__ ("f"#regnum);                                     \
229 +       __asm__ __volatile__ ("stf.spill [%0]=%1" :: "r"(x), "f"(__f__) : "memory");    \
230  })
231  
232  #define ia64_fetchadd4_acq(p, inc)                                             \
233  ({                                                                             \
234                                                                                 \
235         __u64 ia64_intri_res;                                                   \
236 -       asm volatile ("fetchadd4.acq %0=[%1],%2"                                \
237 +       __asm__ __volatile__ ("fetchadd4.acq %0=[%1],%2"                                \
238                                 : "=r"(ia64_intri_res) : "r"(p), "i" (inc)      \
239                                 : "memory");                                    \
240                                                                                 \
241 @@ -235,7 +235,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
242  #define ia64_fetchadd4_rel(p, inc)                                             \
243  ({                                                                             \
244         __u64 ia64_intri_res;                                                   \
245 -       asm volatile ("fetchadd4.rel %0=[%1],%2"                                \
246 +       __asm__ __volatile__ ("fetchadd4.rel %0=[%1],%2"                                \
247                                 : "=r"(ia64_intri_res) : "r"(p), "i" (inc)      \
248                                 : "memory");                                    \
249                                                                                 \
250 @@ -246,7 +246,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
251  ({                                                                             \
252                                                                                 \
253         __u64 ia64_intri_res;                                                   \
254 -       asm volatile ("fetchadd8.acq %0=[%1],%2"                                \
255 +       __asm__ __volatile__ ("fetchadd8.acq %0=[%1],%2"                                \
256                                 : "=r"(ia64_intri_res) : "r"(p), "i" (inc)      \
257                                 : "memory");                                    \
258                                                                                 \
259 @@ -256,7 +256,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
260  #define ia64_fetchadd8_rel(p, inc)                                             \
261  ({                                                                             \
262         __u64 ia64_intri_res;                                                   \
263 -       asm volatile ("fetchadd8.rel %0=[%1],%2"                                \
264 +       __asm__ __volatile__ ("fetchadd8.rel %0=[%1],%2"                                \
265                                 : "=r"(ia64_intri_res) : "r"(p), "i" (inc)      \
266                                 : "memory");                                    \
267                                                                                 \
268 @@ -266,7 +266,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
269  #define ia64_xchg1(ptr,x)                                                      \
270  ({                                                                             \
271         __u64 ia64_intri_res;                                                   \
272 -       asm volatile ("xchg1 %0=[%1],%2"                                        \
273 +       __asm__ __volatile__ ("xchg1 %0=[%1],%2"                                        \
274                       : "=r" (ia64_intri_res) : "r" (ptr), "r" (x) : "memory"); \
275         ia64_intri_res;                                                         \
276  })
277 @@ -274,7 +274,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
278  #define ia64_xchg2(ptr,x)                                              \
279  ({                                                                     \
280         __u64 ia64_intri_res;                                           \
281 -       asm volatile ("xchg2 %0=[%1],%2" : "=r" (ia64_intri_res)        \
282 +       __asm__ __volatile__ ("xchg2 %0=[%1],%2" : "=r" (ia64_intri_res)        \
283                       : "r" (ptr), "r" (x) : "memory");                 \
284         ia64_intri_res;                                                 \
285  })
286 @@ -282,7 +282,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
287  #define ia64_xchg4(ptr,x)                                              \
288  ({                                                                     \
289         __u64 ia64_intri_res;                                           \
290 -       asm volatile ("xchg4 %0=[%1],%2" : "=r" (ia64_intri_res)        \
291 +       __asm__ __volatile__ ("xchg4 %0=[%1],%2" : "=r" (ia64_intri_res)        \
292                       : "r" (ptr), "r" (x) : "memory");                 \
293         ia64_intri_res;                                                 \
294  })
295 @@ -290,7 +290,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
296  #define ia64_xchg8(ptr,x)                                              \
297  ({                                                                     \
298         __u64 ia64_intri_res;                                           \
299 -       asm volatile ("xchg8 %0=[%1],%2" : "=r" (ia64_intri_res)        \
300 +       __asm__ __volatile__ ("xchg8 %0=[%1],%2" : "=r" (ia64_intri_res)        \
301                       : "r" (ptr), "r" (x) : "memory");                 \
302         ia64_intri_res;                                                 \
303  })
304 @@ -298,8 +298,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
305  #define ia64_cmpxchg1_acq(ptr, new, old)                                               \
306  ({                                                                                     \
307         __u64 ia64_intri_res;                                                           \
308 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
309 -       asm volatile ("cmpxchg1.acq %0=[%1],%2,ar.ccv":                                 \
310 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
311 +       __asm__ __volatile__ ("cmpxchg1.acq %0=[%1],%2,ar.ccv":                                 \
312                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
313         ia64_intri_res;                                                                 \
314  })
315 @@ -307,8 +307,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
316  #define ia64_cmpxchg1_rel(ptr, new, old)                                               \
317  ({                                                                                     \
318         __u64 ia64_intri_res;                                                           \
319 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
320 -       asm volatile ("cmpxchg1.rel %0=[%1],%2,ar.ccv":                                 \
321 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
322 +       __asm__ __volatile__ ("cmpxchg1.rel %0=[%1],%2,ar.ccv":                                 \
323                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
324         ia64_intri_res;                                                                 \
325  })
326 @@ -316,8 +316,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
327  #define ia64_cmpxchg2_acq(ptr, new, old)                                               \
328  ({                                                                                     \
329         __u64 ia64_intri_res;                                                           \
330 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
331 -       asm volatile ("cmpxchg2.acq %0=[%1],%2,ar.ccv":                                 \
332 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
333 +       __asm__ __volatile__ ("cmpxchg2.acq %0=[%1],%2,ar.ccv":                                 \
334                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
335         ia64_intri_res;                                                                 \
336  })
337 @@ -325,9 +325,9 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
338  #define ia64_cmpxchg2_rel(ptr, new, old)                                               \
339  ({                                                                                     \
340         __u64 ia64_intri_res;                                                           \
341 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
342 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
343                                                                                         \
344 -       asm volatile ("cmpxchg2.rel %0=[%1],%2,ar.ccv":                                 \
345 +       __asm__ __volatile__ ("cmpxchg2.rel %0=[%1],%2,ar.ccv":                                 \
346                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
347         ia64_intri_res;                                                                 \
348  })
349 @@ -335,8 +335,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
350  #define ia64_cmpxchg4_acq(ptr, new, old)                                               \
351  ({                                                                                     \
352         __u64 ia64_intri_res;                                                           \
353 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
354 -       asm volatile ("cmpxchg4.acq %0=[%1],%2,ar.ccv":                                 \
355 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
356 +       __asm__ __volatile__ ("cmpxchg4.acq %0=[%1],%2,ar.ccv":                                 \
357                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
358         ia64_intri_res;                                                                 \
359  })
360 @@ -344,8 +344,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
361  #define ia64_cmpxchg4_rel(ptr, new, old)                                               \
362  ({                                                                                     \
363         __u64 ia64_intri_res;                                                           \
364 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
365 -       asm volatile ("cmpxchg4.rel %0=[%1],%2,ar.ccv":                                 \
366 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
367 +       __asm__ __volatile__ ("cmpxchg4.rel %0=[%1],%2,ar.ccv":                                 \
368                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
369         ia64_intri_res;                                                                 \
370  })
371 @@ -353,8 +353,8 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
372  #define ia64_cmpxchg8_acq(ptr, new, old)                                               \
373  ({                                                                                     \
374         __u64 ia64_intri_res;                                                           \
375 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
376 -       asm volatile ("cmpxchg8.acq %0=[%1],%2,ar.ccv":                                 \
377 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
378 +       __asm__ __volatile__ ("cmpxchg8.acq %0=[%1],%2,ar.ccv":                                 \
379                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
380         ia64_intri_res;                                                                 \
381  })
382 @@ -362,106 +362,106 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
383  #define ia64_cmpxchg8_rel(ptr, new, old)                                               \
384  ({                                                                                     \
385         __u64 ia64_intri_res;                                                           \
386 -       asm volatile ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
387 +       __asm__ __volatile__ ("mov ar.ccv=%0;;" :: "rO"(old));                                  \
388                                                                                         \
389 -       asm volatile ("cmpxchg8.rel %0=[%1],%2,ar.ccv":                                 \
390 +       __asm__ __volatile__ ("cmpxchg8.rel %0=[%1],%2,ar.ccv":                                 \
391                               "=r"(ia64_intri_res) : "r"(ptr), "r"(new) : "memory");    \
392         ia64_intri_res;                                                                 \
393  })
394  
395 -#define ia64_mf()      asm volatile ("mf" ::: "memory")
396 -#define ia64_mfa()     asm volatile ("mf.a" ::: "memory")
397 +#define ia64_mf()      __asm__ __volatile__ ("mf" ::: "memory")
398 +#define ia64_mfa()     __asm__ __volatile__ ("mf.a" ::: "memory")
399  
400 -#define ia64_invala() asm volatile ("invala" ::: "memory")
401 +#define ia64_invala() __asm__ __volatile__ ("invala" ::: "memory")
402  
403  #define ia64_thash(addr)                                                       \
404  ({                                                                             \
405         __u64 ia64_intri_res;                                                   \
406 -       asm volatile ("thash %0=%1" : "=r"(ia64_intri_res) : "r" (addr));       \
407 +       __asm__ __volatile__ ("thash %0=%1" : "=r"(ia64_intri_res) : "r" (addr));       \
408         ia64_intri_res;                                                         \
409  })
410  
411 -#define ia64_srlz_i()  asm volatile (";; srlz.i ;;" ::: "memory")
412 -#define ia64_srlz_d()  asm volatile (";; srlz.d" ::: "memory");
413 +#define ia64_srlz_i()  __asm__ __volatile__ (";; srlz.i ;;" ::: "memory")
414 +#define ia64_srlz_d()  __asm__ __volatile__ (";; srlz.d" ::: "memory");
415  
416  #ifdef HAVE_SERIALIZE_DIRECTIVE
417 -# define ia64_dv_serialize_data()              asm volatile (".serialize.data");
418 -# define ia64_dv_serialize_instruction()       asm volatile (".serialize.instruction");
419 +# define ia64_dv_serialize_data()              __asm__ __volatile__ (".serialize.data");
420 +# define ia64_dv_serialize_instruction()       __asm__ __volatile__ (".serialize.instruction");
421  #else
422  # define ia64_dv_serialize_data()
423  # define ia64_dv_serialize_instruction()
424  #endif
425  
426 -#define ia64_nop(x)    asm volatile ("nop %0"::"i"(x));
427 +#define ia64_nop(x)    __asm__ __volatile__ ("nop %0"::"i"(x));
428  
429 -#define ia64_itci(addr)        asm volatile ("itc.i %0;;" :: "r"(addr) : "memory")
430 +#define ia64_itci(addr)        __asm__ __volatile__ ("itc.i %0;;" :: "r"(addr) : "memory")
431  
432 -#define ia64_itcd(addr)        asm volatile ("itc.d %0;;" :: "r"(addr) : "memory")
433 +#define ia64_itcd(addr)        __asm__ __volatile__ ("itc.d %0;;" :: "r"(addr) : "memory")
434  
435  
436 -#define ia64_itri(trnum, addr) asm volatile ("itr.i itr[%0]=%1"                                \
437 +#define ia64_itri(trnum, addr) __asm__ __volatile__ ("itr.i itr[%0]=%1"                                \
438                                              :: "r"(trnum), "r"(addr) : "memory")
439  
440 -#define ia64_itrd(trnum, addr) asm volatile ("itr.d dtr[%0]=%1"                                \
441 +#define ia64_itrd(trnum, addr) __asm__ __volatile__ ("itr.d dtr[%0]=%1"                                \
442                                              :: "r"(trnum), "r"(addr) : "memory")
443  
444  #define ia64_tpa(addr)                                                         \
445  ({                                                                             \
446         __u64 ia64_pa;                                                          \
447 -       asm volatile ("tpa %0 = %1" : "=r"(ia64_pa) : "r"(addr) : "memory");    \
448 +       __asm__ __volatile__ ("tpa %0 = %1" : "=r"(ia64_pa) : "r"(addr) : "memory");    \
449         ia64_pa;                                                                \
450  })
451  
452  #define __ia64_set_dbr(index, val)                                             \
453 -       asm volatile ("mov dbr[%0]=%1" :: "r"(index), "r"(val) : "memory")
454 +       __asm__ __volatile__ ("mov dbr[%0]=%1" :: "r"(index), "r"(val) : "memory")
455  
456  #define ia64_set_ibr(index, val)                                               \
457 -       asm volatile ("mov ibr[%0]=%1" :: "r"(index), "r"(val) : "memory")
458 +       __asm__ __volatile__ ("mov ibr[%0]=%1" :: "r"(index), "r"(val) : "memory")
459  
460  #define ia64_set_pkr(index, val)                                               \
461 -       asm volatile ("mov pkr[%0]=%1" :: "r"(index), "r"(val) : "memory")
462 +       __asm__ __volatile__ ("mov pkr[%0]=%1" :: "r"(index), "r"(val) : "memory")
463  
464  #define ia64_set_pmc(index, val)                                               \
465 -       asm volatile ("mov pmc[%0]=%1" :: "r"(index), "r"(val) : "memory")
466 +       __asm__ __volatile__ ("mov pmc[%0]=%1" :: "r"(index), "r"(val) : "memory")
467  
468  #define ia64_set_pmd(index, val)                                               \
469 -       asm volatile ("mov pmd[%0]=%1" :: "r"(index), "r"(val) : "memory")
470 +       __asm__ __volatile__ ("mov pmd[%0]=%1" :: "r"(index), "r"(val) : "memory")
471  
472  #define ia64_set_rr(index, val)                                                        \
473 -       asm volatile ("mov rr[%0]=%1" :: "r"(index), "r"(val) : "memory");
474 +       __asm__ __volatile__ ("mov rr[%0]=%1" :: "r"(index), "r"(val) : "memory");
475  
476  #define ia64_get_cpuid(index)                                                          \
477  ({                                                                                     \
478         __u64 ia64_intri_res;                                                           \
479 -       asm volatile ("mov %0=cpuid[%r1]" : "=r"(ia64_intri_res) : "rO"(index));        \
480 +       __asm__ __volatile__ ("mov %0=cpuid[%r1]" : "=r"(ia64_intri_res) : "rO"(index));        \
481         ia64_intri_res;                                                                 \
482  })
483  
484  #define __ia64_get_dbr(index)                                                  \
485  ({                                                                             \
486         __u64 ia64_intri_res;                                                   \
487 -       asm volatile ("mov %0=dbr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
488 +       __asm__ __volatile__ ("mov %0=dbr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
489         ia64_intri_res;                                                         \
490  })
491  
492  #define ia64_get_ibr(index)                                                    \
493  ({                                                                             \
494         __u64 ia64_intri_res;                                                   \
495 -       asm volatile ("mov %0=ibr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
496 +       __asm__ __volatile__ ("mov %0=ibr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
497         ia64_intri_res;                                                         \
498  })
499  
500  #define ia64_get_pkr(index)                                                    \
501  ({                                                                             \
502         __u64 ia64_intri_res;                                                   \
503 -       asm volatile ("mov %0=pkr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
504 +       __asm__ __volatile__ ("mov %0=pkr[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
505         ia64_intri_res;                                                         \
506  })
507  
508  #define ia64_get_pmc(index)                                                    \
509  ({                                                                             \
510         __u64 ia64_intri_res;                                                   \
511 -       asm volatile ("mov %0=pmc[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
512 +       __asm__ __volatile__ ("mov %0=pmc[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
513         ia64_intri_res;                                                         \
514  })
515  
516 @@ -469,46 +469,46 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
517  #define ia64_get_pmd(index)                                                    \
518  ({                                                                             \
519         __u64 ia64_intri_res;                                                   \
520 -       asm volatile ("mov %0=pmd[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
521 +       __asm__ __volatile__ ("mov %0=pmd[%1]" : "=r"(ia64_intri_res) : "r"(index));    \
522         ia64_intri_res;                                                         \
523  })
524  
525  #define ia64_get_rr(index)                                                     \
526  ({                                                                             \
527         __u64 ia64_intri_res;                                                   \
528 -       asm volatile ("mov %0=rr[%1]" : "=r"(ia64_intri_res) : "r" (index));    \
529 +       __asm__ __volatile__ ("mov %0=rr[%1]" : "=r"(ia64_intri_res) : "r" (index));    \
530         ia64_intri_res;                                                         \
531  })
532  
533 -#define ia64_fc(addr)  asm volatile ("fc %0" :: "r"(addr) : "memory")
534 +#define ia64_fc(addr)  __asm__ __volatile__ ("fc %0" :: "r"(addr) : "memory")
535  
536  
537 -#define ia64_sync_i()  asm volatile (";; sync.i" ::: "memory")
538 +#define ia64_sync_i()  __asm__ __volatile__ (";; sync.i" ::: "memory")
539  
540 -#define ia64_ssm(mask) asm volatile ("ssm %0":: "i"((mask)) : "memory")
541 -#define ia64_rsm(mask) asm volatile ("rsm %0":: "i"((mask)) : "memory")
542 -#define ia64_sum(mask) asm volatile ("sum %0":: "i"((mask)) : "memory")
543 -#define ia64_rum(mask) asm volatile ("rum %0":: "i"((mask)) : "memory")
544 +#define ia64_ssm(mask) __asm__ __volatile__ ("ssm %0":: "i"((mask)) : "memory")
545 +#define ia64_rsm(mask) __asm__ __volatile__ ("rsm %0":: "i"((mask)) : "memory")
546 +#define ia64_sum(mask) __asm__ __volatile__ ("sum %0":: "i"((mask)) : "memory")
547 +#define ia64_rum(mask) __asm__ __volatile__ ("rum %0":: "i"((mask)) : "memory")
548  
549 -#define ia64_ptce(addr)        asm volatile ("ptc.e %0" :: "r"(addr))
550 +#define ia64_ptce(addr)        __asm__ __volatile__ ("ptc.e %0" :: "r"(addr))
551  
552  #define ia64_ptcga(addr, size)                                                 \
553  do {                                                                           \
554 -       asm volatile ("ptc.ga %0,%1" :: "r"(addr), "r"(size) : "memory");       \
555 +       __asm__ __volatile__ ("ptc.ga %0,%1" :: "r"(addr), "r"(size) : "memory");       \
556         ia64_dv_serialize_data();                                               \
557  } while (0)
558  
559  #define ia64_ptcl(addr, size)                                                  \
560  do {                                                                           \
561 -       asm volatile ("ptc.l %0,%1" :: "r"(addr), "r"(size) : "memory");        \
562 +       __asm__ __volatile__ ("ptc.l %0,%1" :: "r"(addr), "r"(size) : "memory");        \
563         ia64_dv_serialize_data();                                               \
564  } while (0)
565  
566  #define ia64_ptri(addr, size)                                          \
567 -       asm volatile ("ptr.i %0,%1" :: "r"(addr), "r"(size) : "memory")
568 +       __asm__ __volatile__ ("ptr.i %0,%1" :: "r"(addr), "r"(size) : "memory")
569  
570  #define ia64_ptrd(addr, size)                                          \
571 -       asm volatile ("ptr.d %0,%1" :: "r"(addr), "r"(size) : "memory")
572 +       __asm__ __volatile__ ("ptr.d %0,%1" :: "r"(addr), "r"(size) : "memory")
573  
574  /* Values for lfhint in ia64_lfetch and ia64_lfetch_fault */
575  
576 @@ -521,16 +521,16 @@ do {                                                                              \
577  ({                                                             \
578          switch (lfhint) {                                      \
579          case ia64_lfhint_none:                                 \
580 -                asm volatile ("lfetch [%0]" : : "r"(y));       \
581 +                __asm__ __volatile__ ("lfetch [%0]" : : "r"(y));       \
582                  break;                                         \
583          case ia64_lfhint_nt1:                                  \
584 -                asm volatile ("lfetch.nt1 [%0]" : : "r"(y));   \
585 +                __asm__ __volatile__ ("lfetch.nt1 [%0]" : : "r"(y));   \
586                  break;                                         \
587          case ia64_lfhint_nt2:                                  \
588 -                asm volatile ("lfetch.nt2 [%0]" : : "r"(y));   \
589 +                __asm__ __volatile__ ("lfetch.nt2 [%0]" : : "r"(y));   \
590                  break;                                         \
591          case ia64_lfhint_nta:                                  \
592 -                asm volatile ("lfetch.nta [%0]" : : "r"(y));   \
593 +                __asm__ __volatile__ ("lfetch.nta [%0]" : : "r"(y));   \
594                  break;                                         \
595          }                                                      \
596  })
597 @@ -539,16 +539,16 @@ do {                                                                              \
598  ({                                                                     \
599          switch (lfhint) {                                              \
600          case ia64_lfhint_none:                                         \
601 -                asm volatile ("lfetch.excl [%0]" :: "r"(y));           \
602 +                __asm__ __volatile__ ("lfetch.excl [%0]" :: "r"(y));           \
603                  break;                                                 \
604          case ia64_lfhint_nt1:                                          \
605 -                asm volatile ("lfetch.excl.nt1 [%0]" :: "r"(y));       \
606 +                __asm__ __volatile__ ("lfetch.excl.nt1 [%0]" :: "r"(y));       \
607                  break;                                                 \
608          case ia64_lfhint_nt2:                                          \
609 -                asm volatile ("lfetch.excl.nt2 [%0]" :: "r"(y));       \
610 +                __asm__ __volatile__ ("lfetch.excl.nt2 [%0]" :: "r"(y));       \
611                  break;                                                 \
612          case ia64_lfhint_nta:                                          \
613 -                asm volatile ("lfetch.excl.nta [%0]" :: "r"(y));       \
614 +                __asm__ __volatile__ ("lfetch.excl.nta [%0]" :: "r"(y));       \
615                  break;                                                 \
616          }                                                              \
617  })
618 @@ -557,16 +557,16 @@ do {                                                                              \
619  ({                                                                     \
620          switch (lfhint) {                                              \
621          case ia64_lfhint_none:                                         \
622 -                asm volatile ("lfetch.fault [%0]" : : "r"(y));         \
623 +                __asm__ __volatile__ ("lfetch.fault [%0]" : : "r"(y));         \
624                  break;                                                 \
625          case ia64_lfhint_nt1:                                          \
626 -                asm volatile ("lfetch.fault.nt1 [%0]" : : "r"(y));     \
627 +                __asm__ __volatile__ ("lfetch.fault.nt1 [%0]" : : "r"(y));     \
628                  break;                                                 \
629          case ia64_lfhint_nt2:                                          \
630 -                asm volatile ("lfetch.fault.nt2 [%0]" : : "r"(y));     \
631 +                __asm__ __volatile__ ("lfetch.fault.nt2 [%0]" : : "r"(y));     \
632                  break;                                                 \
633          case ia64_lfhint_nta:                                          \
634 -                asm volatile ("lfetch.fault.nta [%0]" : : "r"(y));     \
635 +                __asm__ __volatile__ ("lfetch.fault.nta [%0]" : : "r"(y));     \
636                  break;                                                 \
637          }                                                              \
638  })
639 @@ -575,23 +575,23 @@ do {                                                                              \
640  ({                                                                     \
641          switch (lfhint) {                                              \
642          case ia64_lfhint_none:                                         \
643 -                asm volatile ("lfetch.fault.excl [%0]" :: "r"(y));     \
644 +                __asm__ __volatile__ ("lfetch.fault.excl [%0]" :: "r"(y));     \
645                  break;                                                 \
646          case ia64_lfhint_nt1:                                          \
647 -                asm volatile ("lfetch.fault.excl.nt1 [%0]" :: "r"(y)); \
648 +                __asm__ __volatile__ ("lfetch.fault.excl.nt1 [%0]" :: "r"(y)); \
649                  break;                                                 \
650          case ia64_lfhint_nt2:                                          \
651 -                asm volatile ("lfetch.fault.excl.nt2 [%0]" :: "r"(y)); \
652 +                __asm__ __volatile__ ("lfetch.fault.excl.nt2 [%0]" :: "r"(y)); \
653                  break;                                                 \
654          case ia64_lfhint_nta:                                          \
655 -                asm volatile ("lfetch.fault.excl.nta [%0]" :: "r"(y)); \
656 +                __asm__ __volatile__ ("lfetch.fault.excl.nta [%0]" :: "r"(y)); \
657                  break;                                                 \
658          }                                                              \
659  })
660  
661  #define ia64_intrin_local_irq_restore(x)                       \
662  do {                                                           \
663 -       asm volatile (";;   cmp.ne p6,p7=%0,r0;;"               \
664 +       __asm__ __volatile__ (";;   cmp.ne p6,p7=%0,r0;;"               \
665                       "(p6) ssm psr.i;"                         \
666                       "(p7) rsm psr.i;;"                        \
667                       "(p6) srlz.d"                             \