static int kvm_get_fpu(CPUState *env)

{

    struct kvm_fpu fpu;

    int i, ret;



    ret = kvm_vcpu_ioctl(env, KVM_GET_FPU, &fpu);

    if (ret < 0)

        return ret;



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

    env->fpus = fpu.fsw;

    env->fpuc = fpu.fcw;

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

	env->fptags[i] = !((fpu.ftwx >> i) & 1);

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

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

    env->mxcsr = fpu.mxcsr;



    return 0;

}

static int kvm_get_fpu(CPUState *env)

{

    struct kvm_fpu fpu;

    int i, ret;



    ret = kvm_vcpu_ioctl(env, KVM_GET_FPU, &fpu);

    if (ret < 0)

        return ret;



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

    env->fpus = fpu.fsw;

    env->fpuc = fpu.fcw;

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

	env->fptags[i] = !((fpu.ftwx >> i) & 1);

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

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

    env->mxcsr = fpu.mxcsr;



    return 0;

}

static int FUNC_0(CPUState *VAR_0)

{

    struct kvm_fpu VAR_1;

    int VAR_2, VAR_3;



    VAR_3 = kvm_vcpu_ioctl(VAR_0, KVM_GET_FPU, &VAR_1);

    if (VAR_3 < 0)

        return VAR_3;



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

    VAR_0->fpus = VAR_1.fsw;

    VAR_0->fpuc = VAR_1.fcw;

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

	VAR_0->fptags[VAR_2] = !((VAR_1.ftwx >> VAR_2) & 1);

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

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

    VAR_0->mxcsr = VAR_1.mxcsr;



    return 0;

}

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