|
@@ -21,13 +21,26 @@ static inline long cede_processor(void)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static inline long register_vpa(unsigned long flags, unsigned long proc,
|
|
|
+static inline long vpa_call(unsigned long flags, unsigned long cpu,
|
|
|
unsigned long vpa)
|
|
|
{
|
|
|
- return plpar_hcall_norets(H_REGISTER_VPA, flags, proc, vpa);
|
|
|
+ /* flags are in bits 16-18 (counting from most significant bit) */
|
|
|
+ flags = flags << (63 - 18);
|
|
|
+
|
|
|
+ return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa);
|
|
|
+}
|
|
|
+
|
|
|
+static inline long unregister_vpa(unsigned long cpu, unsigned long vpa)
|
|
|
+{
|
|
|
+ return vpa_call(0x5, cpu, vpa);
|
|
|
+}
|
|
|
+
|
|
|
+static inline long register_vpa(unsigned long cpu, unsigned long vpa)
|
|
|
+{
|
|
|
+ return vpa_call(0x1, cpu, vpa);
|
|
|
}
|
|
|
|
|
|
-void vpa_init(int cpu);
|
|
|
+extern void vpa_init(int cpu);
|
|
|
|
|
|
static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex,
|
|
|
unsigned long avpn, unsigned long *old_pteh_ret,
|