extern void fpu__activate_curr(struct fpu *fpu);
-extern void fpstate_init(struct fpu *fpu);
+extern void fpstate_init(union thread_xstate *state);
#ifdef CONFIG_MATH_EMULATION
extern void fpstate_init_soft(struct i387_soft_struct *soft);
#else
fp->fos = 0xffff0000u;
}
-void fpstate_init(struct fpu *fpu)
+void fpstate_init(union thread_xstate *state)
{
if (!cpu_has_fpu) {
- fpstate_init_soft(&fpu->state.soft);
+ fpstate_init_soft(&state->soft);
return;
}
- memset(&fpu->state, 0, xstate_size);
+ memset(state, 0, xstate_size);
if (cpu_has_fxsr)
- fpstate_init_fxstate(&fpu->state.fxsave);
+ fpstate_init_fxstate(&state->fxsave);
else
- fpstate_init_fstate(&fpu->state.fsave);
+ fpstate_init_fstate(&state->fsave);
}
EXPORT_SYMBOL_GPL(fpstate_init);
WARN_ON_ONCE(fpu != ¤t->thread.fpu);
if (!fpu->fpstate_active) {
- fpstate_init(fpu);
+ fpstate_init(&fpu->state);
/* Safe to do for the current task: */
fpu->fpstate_active = 1;
if (child_fpu->fpstate_active) {
child_fpu->last_cpu = -1;
} else {
- fpstate_init(child_fpu);
+ fpstate_init(&child_fpu->state);
/* Safe to do for stopped child tasks: */
child_fpu->fpstate_active = 1;
if (__copy_from_user(&fpu->state.xsave, buf_fx, state_size) ||
__copy_from_user(&env, buf, sizeof(env))) {
- fpstate_init(fpu);
+ fpstate_init(&fpu->state);
err = -1;
} else {
sanitize_restored_xstate(tsk, &env, xfeatures, fx_only);
static void fx_init(struct kvm_vcpu *vcpu)
{
- fpstate_init(&vcpu->arch.guest_fpu);
+ fpstate_init(&vcpu->arch.guest_fpu.state);
if (cpu_has_xsaves)
vcpu->arch.guest_fpu.state.xsave.header.xcomp_bv =
host_xcr0 | XSTATE_COMPACTION_ENABLED;