aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2010-02-19 05:00:47 -0500
committerAvi Kivity <avi@redhat.com>2010-04-25 05:38:01 -0400
commit964b6411af10fbddc827fdd3887c49f7f5d2bfd3 (patch)
tree7ee44e0ab94cb66d2dfc7c5ab478c5a717f95d65 /arch/powerpc/kvm
parent20a340abd3f7a1ca4d11502ec71d52b4f414326e (diff)
KVM: PPC: Simplify kvmppc_load_up_(FPU|VMX|VSX)
We don't need as complex code. I had some thinkos while writing it, figuring I needed to support PPC32 paths on PPC64 which would have required DR=0, but everything just runs fine with DR=1. So let's make the functions simple C call wrappers that reserve some space on the stack for the respective functions to clobber. Fixes out-of-RMA-access (and thus guest FPU loading) on the PS3. Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r--arch/powerpc/kvm/book3s_64_rmhandlers.S13
1 files changed, 2 insertions, 11 deletions
diff --git a/arch/powerpc/kvm/book3s_64_rmhandlers.S b/arch/powerpc/kvm/book3s_64_rmhandlers.S
index c83c60ad96c5..bd08535fcdc8 100644
--- a/arch/powerpc/kvm/book3s_64_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_64_rmhandlers.S
@@ -164,24 +164,15 @@ _GLOBAL(kvmppc_rmcall)
164#define define_load_up(what) \ 164#define define_load_up(what) \
165 \ 165 \
166_GLOBAL(kvmppc_load_up_ ## what); \ 166_GLOBAL(kvmppc_load_up_ ## what); \
167 subi r1, r1, INT_FRAME_SIZE; \ 167 stdu r1, -INT_FRAME_SIZE(r1); \
168 mflr r3; \ 168 mflr r3; \
169 std r3, _LINK(r1); \ 169 std r3, _LINK(r1); \
170 mfmsr r4; \
171 std r31, GPR3(r1); \
172 mr r31, r4; \
173 li r5, MSR_DR; \
174 oris r5, r5, MSR_EE@h; \
175 andc r4, r4, r5; \
176 mtmsr r4; \
177 \ 170 \
178 bl .load_up_ ## what; \ 171 bl .load_up_ ## what; \
179 \ 172 \
180 mtmsr r31; \
181 ld r3, _LINK(r1); \ 173 ld r3, _LINK(r1); \
182 ld r31, GPR3(r1); \
183 addi r1, r1, INT_FRAME_SIZE; \
184 mtlr r3; \ 174 mtlr r3; \
175 addi r1, r1, INT_FRAME_SIZE; \
185 blr 176 blr
186 177
187define_load_up(fpu) 178define_load_up(fpu)