static void restore_native_fp_frstor(CPUState *env)

{

    int fptag, i, j;

    struct fpstate fp1, *fp = &fp1;



    fp->fpuc = env->fpuc;

    fp->fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;

    fptag = 0;

    for (i=7; i>=0; i--) {

	fptag <<= 2;

	if (env->fptags[i]) {

            fptag |= 3;

        } else {

            /* the FPU automatically computes it */

        }

    }

    fp->fptag = fptag;

    j = env->fpstt;

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

        memcpy(&fp->fpregs1[i * 10], &env->fpregs[j].d, 10);

        j = (j + 1) & 7;

    }

    asm volatile ("frstor %0" : "=m" (*fp));

}

static void restore_native_fp_frstor(CPUState *env)

{

    int fptag, i, j;

    struct fpstate fp1, *fp = &fp1;



    fp->fpuc = env->fpuc;

    fp->fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;

    fptag = 0;

    for (i=7; i>=0; i--) {

	fptag <<= 2;

	if (env->fptags[i]) {

            fptag |= 3;

        } else {

            

        }

    }

    fp->fptag = fptag;

    j = env->fpstt;

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

        memcpy(&fp->fpregs1[i * 10], &env->fpregs[j].d, 10);

        j = (j + 1) & 7;

    }

    asm volatile ("frstor %0" : "=m" (*fp));

}

static void FUNC_0(CPUState *VAR_0)

{

    int VAR_1, VAR_2, VAR_3;

    struct fpstate VAR_4, *VAR_5 = &VAR_4;



    VAR_5->fpuc = VAR_0->fpuc;

    VAR_5->fpus = (VAR_0->fpus & ~0x3800) | (VAR_0->fpstt & 0x7) << 11;

    VAR_1 = 0;

    for (VAR_2=7; VAR_2>=0; VAR_2--) {

	VAR_1 <<= 2;

	if (VAR_0->fptags[VAR_2]) {

            VAR_1 |= 3;

        } else {

            

        }

    }

    VAR_5->VAR_1 = VAR_1;

    VAR_3 = VAR_0->fpstt;

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

        memcpy(&VAR_5->fpregs1[VAR_2 * 10], &VAR_0->fpregs[VAR_3].d, 10);

        VAR_3 = (VAR_3 + 1) & 7;

    }

    asm volatile ("frstor %0" : "=m" (*VAR_5));

}

static void FUNC_0(CPUState *VAR_0)
{ int VAR_1, VAR_2, VAR_3; struct fpstate VAR_4, *VAR_5 = &VAR_4; VAR_5->fpuc = VAR_0->fpuc; VAR_5->fpus = (VAR_0->fpus & ~0x3800) | (VAR_0->fpstt & 0x7) << 11; VAR_1 = 0; for (VAR_2=7; VAR_2>=0; VAR_2--) { VAR_1 <<= 2; if (VAR_0->fptags[VAR_2]) { VAR_1 |= 3; } else { } } VAR_5->VAR_1 = VAR_1; VAR_3 = VAR_0->fpstt; for(VAR_2 = 0;VAR_2 < 8; VAR_2++) { memcpy(&VAR_5->fpregs1[VAR_2 * 10], &VAR_0->fpregs[VAR_3].d, 10); VAR_3 = (VAR_3 + 1) & 7; } asm volatile ("frstor %0" : "=m" (*VAR_5)); }