vserver 1.9.3
[linux-2.6.git] / include / asm-ia64 / gcc_intrin.h
index d3d94e8..7c357df 100644 (file)
@@ -259,35 +259,35 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
        ia64_intri_res;                                                         \
 })
 
-#define ia64_xchg1(ptr,x)                                              \
-({                                                                     \
-       __u64 ia64_intri_res;                                           \
-       asm __volatile ("xchg1 %0=[%1],%2" : "=r" (ia64_intri_res)      \
-                           : "r" (ptr), "r" (x) : "memory");           \
-       ia64_intri_res;                                                 \
+#define ia64_xchg1(ptr,x)                                                      \
+({                                                                             \
+       __u64 ia64_intri_res;                                                   \
+       asm volatile ("xchg1 %0=[%1],%2"                                        \
+                     : "=r" (ia64_intri_res) : "r" (ptr), "r" (x) : "memory"); \
+       ia64_intri_res;                                                         \
 })
 
 #define ia64_xchg2(ptr,x)                                              \
 ({                                                                     \
        __u64 ia64_intri_res;                                           \
-       asm __volatile ("xchg2 %0=[%1],%2" : "=r" (ia64_intri_res)      \
-                           : "r" (ptr), "r" (x) : "memory");           \
+       asm volatile ("xchg2 %0=[%1],%2" : "=r" (ia64_intri_res)        \
+                     : "r" (ptr), "r" (x) : "memory");                 \
        ia64_intri_res;                                                 \
 })
 
 #define ia64_xchg4(ptr,x)                                              \
 ({                                                                     \
        __u64 ia64_intri_res;                                           \
-       asm __volatile ("xchg4 %0=[%1],%2" : "=r" (ia64_intri_res)      \
-                           : "r" (ptr), "r" (x) : "memory");           \
+       asm volatile ("xchg4 %0=[%1],%2" : "=r" (ia64_intri_res)        \
+                     : "r" (ptr), "r" (x) : "memory");                 \
        ia64_intri_res;                                                 \
 })
 
 #define ia64_xchg8(ptr,x)                                              \
 ({                                                                     \
        __u64 ia64_intri_res;                                           \
-       asm __volatile ("xchg8 %0=[%1],%2" : "=r" (ia64_intri_res)      \
-                           : "r" (ptr), "r" (x) : "memory");           \
+       asm volatile ("xchg8 %0=[%1],%2" : "=r" (ia64_intri_res)        \
+                     : "r" (ptr), "r" (x) : "memory");                 \
        ia64_intri_res;                                                 \
 })
 
@@ -489,10 +489,16 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
 #define ia64_ptce(addr)        asm volatile ("ptc.e %0" :: "r"(addr))
 
 #define ia64_ptcga(addr, size)                                                 \
-       asm volatile ("ptc.ga %0,%1" :: "r"(addr), "r"(size) : "memory")
+do {                                                                           \
+       asm volatile ("ptc.ga %0,%1" :: "r"(addr), "r"(size) : "memory");       \
+       ia64_dv_serialize_data();                                               \
+} while (0)
 
-#define ia64_ptcl(addr, size)                                          \
-       asm volatile ("ptc.l %0,%1" :: "r"(addr), "r"(size) : "memory")
+#define ia64_ptcl(addr, size)                                                  \
+do {                                                                           \
+       asm volatile ("ptc.l %0,%1" :: "r"(addr), "r"(size) : "memory");        \
+       ia64_dv_serialize_data();                                               \
+} while (0)
 
 #define ia64_ptri(addr, size)                                          \
        asm volatile ("ptr.i %0,%1" :: "r"(addr), "r"(size) : "memory")
@@ -581,7 +587,7 @@ register unsigned long ia64_r13 asm ("r13") __attribute_used__;
 
 #define ia64_intrin_local_irq_restore(x)                       \
 do {                                                           \
-       asm volatile ("     cmp.ne p6,p7=%0,r0;;"               \
+       asm volatile (";;   cmp.ne p6,p7=%0,r0;;"               \
                      "(p6) ssm psr.i;"                         \
                      "(p7) rsm psr.i;;"                        \
                      "(p6) srlz.d"                             \