aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/hvCall.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/pseries/hvCall.S')
-rw-r--r--arch/powerpc/platforms/pseries/hvCall.S34
1 files changed, 34 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pseries/hvCall.S b/arch/powerpc/platforms/pseries/hvCall.S
index 5c7e38789897..1501b0a9e749 100644
--- a/arch/powerpc/platforms/pseries/hvCall.S
+++ b/arch/powerpc/platforms/pseries/hvCall.S
@@ -123,6 +123,40 @@ _GLOBAL(plpar_hcall)
123 123
124 blr /* return r3 = status */ 124 blr /* return r3 = status */
125 125
126/*
127 * plpar_hcall_raw can be called in real mode. kexec/kdump need some
128 * hypervisor calls to be executed in real mode. So plpar_hcall_raw
129 * does not access the per cpu hypervisor call statistics variables,
130 * since these variables may not be present in the RMO region.
131 */
132_GLOBAL(plpar_hcall_raw)
133 HMT_MEDIUM
134
135 mfcr r0
136 stw r0,8(r1)
137
138 std r4,STK_PARM(r4)(r1) /* Save ret buffer */
139
140 mr r4,r5
141 mr r5,r6
142 mr r6,r7
143 mr r7,r8
144 mr r8,r9
145 mr r9,r10
146
147 HVSC /* invoke the hypervisor */
148
149 ld r12,STK_PARM(r4)(r1)
150 std r4, 0(r12)
151 std r5, 8(r12)
152 std r6, 16(r12)
153 std r7, 24(r12)
154
155 lwz r0,8(r1)
156 mtcrf 0xff,r0
157
158 blr /* return r3 = status */
159
126_GLOBAL(plpar_hcall9) 160_GLOBAL(plpar_hcall9)
127 HMT_MEDIUM 161 HMT_MEDIUM
128 162