static int kvm_put_fpu(CPUState *env)

{

    struct kvm_fpu fpu;

    int i;



    memset(&fpu, 0, sizeof fpu);

    fpu.fsw = env->fpus & ~(7 << 11);

    fpu.fsw |= (env->fpstt & 7) << 11;

    fpu.fcw = env->fpuc;

    for (i = 0; i < 8; ++i)

	fpu.ftwx |= (!env->fptags[i]) << i;

    memcpy(fpu.fpr, env->fpregs, sizeof env->fpregs);

    memcpy(fpu.xmm, env->xmm_regs, sizeof env->xmm_regs);

    fpu.mxcsr = env->mxcsr;



    return kvm_vcpu_ioctl(env, KVM_SET_FPU, &fpu);

}

static int kvm_put_fpu(CPUState *env)

{

    struct kvm_fpu fpu;

    int i;



    memset(&fpu, 0, sizeof fpu);

    fpu.fsw = env->fpus & ~(7 << 11);

    fpu.fsw |= (env->fpstt & 7) << 11;

    fpu.fcw = env->fpuc;

    for (i = 0; i < 8; ++i)

	fpu.ftwx |= (!env->fptags[i]) << i;

    memcpy(fpu.fpr, env->fpregs, sizeof env->fpregs);

    memcpy(fpu.xmm, env->xmm_regs, sizeof env->xmm_regs);

    fpu.mxcsr = env->mxcsr;



    return kvm_vcpu_ioctl(env, KVM_SET_FPU, &fpu);

}

static int FUNC_0(CPUState *VAR_0)

{

    struct kvm_fpu VAR_1;

    int VAR_2;



    memset(&VAR_1, 0, sizeof VAR_1);

    VAR_1.fsw = VAR_0->fpus & ~(7 << 11);

    VAR_1.fsw |= (VAR_0->fpstt & 7) << 11;

    VAR_1.fcw = VAR_0->fpuc;

    for (VAR_2 = 0; VAR_2 < 8; ++VAR_2)

	VAR_1.ftwx |= (!VAR_0->fptags[VAR_2]) << VAR_2;

    memcpy(VAR_1.fpr, VAR_0->fpregs, sizeof VAR_0->fpregs);

    memcpy(VAR_1.xmm, VAR_0->xmm_regs, sizeof VAR_0->xmm_regs);

    VAR_1.mxcsr = VAR_0->mxcsr;



    return kvm_vcpu_ioctl(VAR_0, KVM_SET_FPU, &VAR_1);

}

static int FUNC_0(CPUState *VAR_0)
{ struct kvm_fpu VAR_1; int VAR_2; memset(&VAR_1, 0, sizeof VAR_1); VAR_1.fsw = VAR_0->fpus & ~(7 << 11); VAR_1.fsw |= (VAR_0->fpstt & 7) << 11; VAR_1.fcw = VAR_0->fpuc; for (VAR_2 = 0; VAR_2 < 8; ++VAR_2) VAR_1.ftwx |= (!VAR_0->fptags[VAR_2]) << VAR_2; memcpy(VAR_1.fpr, VAR_0->fpregs, sizeof VAR_0->fpregs); memcpy(VAR_1.xmm, VAR_0->xmm_regs, sizeof VAR_0->xmm_regs); VAR_1.mxcsr = VAR_0->mxcsr; return kvm_vcpu_ioctl(VAR_0, KVM_SET_FPU, &VAR_1); }