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>
This commit is contained in:
Родитель
20a340abd3
Коммит
964b6411af
|
@ -164,24 +164,15 @@ _GLOBAL(kvmppc_rmcall)
|
||||||
#define define_load_up(what) \
|
#define define_load_up(what) \
|
||||||
\
|
\
|
||||||
_GLOBAL(kvmppc_load_up_ ## what); \
|
_GLOBAL(kvmppc_load_up_ ## what); \
|
||||||
subi r1, r1, INT_FRAME_SIZE; \
|
stdu r1, -INT_FRAME_SIZE(r1); \
|
||||||
mflr r3; \
|
mflr r3; \
|
||||||
std r3, _LINK(r1); \
|
std r3, _LINK(r1); \
|
||||||
mfmsr r4; \
|
|
||||||
std r31, GPR3(r1); \
|
|
||||||
mr r31, r4; \
|
|
||||||
li r5, MSR_DR; \
|
|
||||||
oris r5, r5, MSR_EE@h; \
|
|
||||||
andc r4, r4, r5; \
|
|
||||||
mtmsr r4; \
|
|
||||||
\
|
\
|
||||||
bl .load_up_ ## what; \
|
bl .load_up_ ## what; \
|
||||||
\
|
\
|
||||||
mtmsr r31; \
|
|
||||||
ld r3, _LINK(r1); \
|
ld r3, _LINK(r1); \
|
||||||
ld r31, GPR3(r1); \
|
|
||||||
addi r1, r1, INT_FRAME_SIZE; \
|
|
||||||
mtlr r3; \
|
mtlr r3; \
|
||||||
|
addi r1, r1, INT_FRAME_SIZE; \
|
||||||
blr
|
blr
|
||||||
|
|
||||||
define_load_up(fpu)
|
define_load_up(fpu)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче