patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / include / asm-ia64 / gcc_intrin.h
index a2274aa..d3d94e8 100644 (file)
@@ -4,9 +4,10 @@
  *
  * Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com>
  * Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com>
- *
  */
 
+#include <linux/compiler.h>
+
 /* define this macro to get some asm stmts included in 'c' files */
 #define ASM_SUPPORTED
 
@@ -23,7 +24,7 @@
 extern void ia64_bad_param_for_setreg (void);
 extern void ia64_bad_param_for_getreg (void);
 
-register unsigned long ia64_r13 asm ("r13");
+register unsigned long ia64_r13 asm ("r13") __attribute_used__;
 
 #define ia64_setreg(regnum, val)                                               \
 ({                                                                             \
@@ -377,9 +378,16 @@ register unsigned long ia64_r13 asm ("r13");
 })
 
 #define ia64_srlz_i()  asm volatile (";; srlz.i ;;" ::: "memory")
-
 #define ia64_srlz_d()  asm volatile (";; srlz.d" ::: "memory");
 
+#ifdef HAVE_SERIALIZE_DIRECTIVE
+# define ia64_dv_serialize_data()              asm volatile (".serialize.data");
+# define ia64_dv_serialize_instruction()       asm volatile (".serialize.instruction");
+#else
+# define ia64_dv_serialize_data()
+# define ia64_dv_serialize_instruction()
+#endif
+
 #define ia64_nop(x)    asm volatile ("nop %0"::"i"(x));
 
 #define ia64_itci(addr)        asm volatile ("itc.i %0;;" :: "r"(addr) : "memory")