diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries/plpar_wrappers.h')
-rw-r--r-- | arch/powerpc/platforms/pseries/plpar_wrappers.h | 19 |
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 | ||
24 | static inline long register_vpa(unsigned long flags, unsigned long proc, | 24 | static 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 | |||
33 | static inline long unregister_vpa(unsigned long cpu, unsigned long vpa) | ||
34 | { | ||
35 | return vpa_call(0x5, cpu, vpa); | ||
36 | } | ||
37 | |||
38 | static inline long register_vpa(unsigned long cpu, unsigned long vpa) | ||
39 | { | ||
40 | return vpa_call(0x1, cpu, vpa); | ||
28 | } | 41 | } |
29 | 42 | ||
30 | void vpa_init(int cpu); | 43 | extern void vpa_init(int cpu); |
31 | 44 | ||
32 | static inline long plpar_pte_remove(unsigned long flags, unsigned long ptex, | 45 | static 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, |