[IA64] fix allmodconfig compilation breakage.
[linux-2.6-block.git] / arch / ia64 / include / asm / paravirt_privop.h
index 4e40e62c4ab8b8ad955bec683d3111b57d648a53..8f6cb11c9fae3203501cf2300580e0e0c1c3b78e 100644 (file)
@@ -33,7 +33,7 @@
  */
 
 struct pv_cpu_ops {
-       void (*fc)(unsigned long addr);
+       void (*fc)(void *addr);
        unsigned long (*thash)(unsigned long addr);
        unsigned long (*get_cpuid)(int index);
        unsigned long (*get_pmd)(int index);
@@ -248,7 +248,7 @@ void paravirt_cpu_asm_init(const struct pv_cpu_asm_switch *cpu_asm_switch);
                "r15", "r16", "r17"
 
 #define PARAVIRT_REG_CLOBBERS1                                 \
-       "r2","r3", /*"r8",*/ "r9", "r10", "r11", "r14", \
+       "r2","r3", /*"r8",*/ "r9", "r10", "r11", "r14",         \
                "r15", "r16", "r17"
 
 #define PARAVIRT_REG_CLOBBERS2                                 \
@@ -330,6 +330,15 @@ void paravirt_cpu_asm_init(const struct pv_cpu_asm_switch *cpu_asm_switch);
                      : PARAVIRT_OP(op), "0"(__##arg1)          \
                      : PARAVIRT_CLOBBERS1)
 
+#define PARAVIRT_BR1_VOID(op, type, arg1)                      \
+       register void *__##arg1 asm ("r8") = arg1;              \
+       register unsigned long ia64_clobber asm ("r8");         \
+       asm volatile (paravirt_alt_bundle(__PARAVIRT_BR,        \
+                                         PARAVIRT_TYPE(type))  \
+                     : "=r"(ia64_clobber)                      \
+                     : PARAVIRT_OP(op), "0"(__##arg1)          \
+                     : PARAVIRT_CLOBBERS1)
+
 #define PARAVIRT_BR2(op, type, arg1, arg2)                             \
        register unsigned long __##arg1 asm ("r8") = arg1;              \
        register unsigned long __##arg2 asm ("r9") = arg2;              \
@@ -357,6 +366,13 @@ void paravirt_cpu_asm_init(const struct pv_cpu_asm_switch *cpu_asm_switch);
                return ia64_intri_res;                  \
        }
 
+#define PARAVIRT_DEFINE_CPU_OP1_VOID(op, type)         \
+       static inline void                              \
+       paravirt_ ## op (void *arg1)                    \
+       {                                               \
+               PARAVIRT_BR1_VOID(op, type, arg1);      \
+       }
+
 #define PARAVIRT_DEFINE_CPU_OP1(op, type)              \
        static inline void                              \
        paravirt_ ## op (unsigned long arg1)            \
@@ -381,7 +397,7 @@ void paravirt_cpu_asm_init(const struct pv_cpu_asm_switch *cpu_asm_switch);
        }
 
 
-PARAVIRT_DEFINE_CPU_OP1(fc, FC);
+PARAVIRT_DEFINE_CPU_OP1_VOID(fc, FC);
 PARAVIRT_DEFINE_CPU_OP1_RET(thash, THASH)
 PARAVIRT_DEFINE_CPU_OP1_RET(get_cpuid, GET_CPUID)
 PARAVIRT_DEFINE_CPU_OP1_RET(get_pmd, GET_PMD)
@@ -429,7 +445,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
                register unsigned long ia64_intri_res asm ("r8");       \
                register unsigned long __reg asm ("r8") = (reg);        \
                                                                        \
-               BUILD_BUG_ON(!__builtin_constant_p(reg));               \
                asm volatile (paravirt_alt_bundle(__PARAVIRT_BR,        \
                                                  PARAVIRT_TYPE(GETREG) \
                                                  + (reg))              \
@@ -448,7 +463,6 @@ paravirt_set_rr0_to_rr4(unsigned long val0, unsigned long val1,
                register unsigned long ia64_clobber1 asm ("r8");        \
                register unsigned long ia64_clobber2 asm ("r9");        \
                                                                        \
-               BUILD_BUG_ON(!__builtin_constant_p(reg));               \
                asm volatile (paravirt_alt_bundle(__PARAVIRT_BR,        \
                                                  PARAVIRT_TYPE(SETREG) \
                                                  + (reg))              \