aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/plpar_wrappers.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/pseries/plpar_wrappers.h')
-rw-r--r--arch/powerpc/platforms/pseries/plpar_wrappers.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/arch/powerpc/platforms/pseries/plpar_wrappers.h b/arch/powerpc/platforms/pseries/plpar_wrappers.h
index 2457be2e217..382f8c5b0e7 100644
--- a/arch/powerpc/platforms/pseries/plpar_wrappers.h
+++ b/arch/powerpc/platforms/pseries/plpar_wrappers.h
@@ -21,13 +21,26 @@ static inline long cede_processor(void)
21 return 0; 21 return 0;
22} 22}
23 23
24static inline long register_vpa(unsigned long flags, unsigned long proc, 24static inline long vpa_call(unsigned long flags, unsigned long cpu,
25 unsigned long vpa) 25 unsigned long vpa)
26{ 26{
27 return plpar_hcall_norets(H_REGISTER_VPA, flags, proc, vpa); 27 /* flags are in bits 16-18 (counting from most significant bit) */
28 flags = flags << (63 - 18);
29
30 return plpar_hcall_norets(H_REGISTER_VPA, flags, cpu, vpa);
31}
32
33static inline long unregister_vpa(unsigned long cpu, unsigned long vpa)
34{
35 return vpa_call(0x5, cpu, vpa);
36}
37
38static inline long register_vpa(unsigned long cpu, unsigned long vpa)
39{
40 return vpa_call(0x1, cpu, vpa);
28} 41}
29 42
30void vpa_init(int cpu); 43extern void vpa_init(int cpu);
31 44
32static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex, 45static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex,
33 unsigned long avpn, unsigned long *old_pteh_ret, 46 unsigned long avpn, unsigned long *old_pteh_ret,