int cpu_load(QEMUFile *f, void *opaque, int version_id)

{

    CPUState *env = opaque;

    int i;

    uint32_t tmp;



    if (version_id != 5)

        return -EINVAL;

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

        qemu_get_betls(f, &env->gregs[i]);

    qemu_get_be32s(f, &env->nwindows);

    for(i = 0; i < env->nwindows * 16; i++)

        qemu_get_betls(f, &env->regbase[i]);



    /* FPU */

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

        union {

            float32 f;

            uint32_t i;

        } u;

        u.i = qemu_get_be32(f);

        env->fpr[i] = u.f;

    }



    qemu_get_betls(f, &env->pc);

    qemu_get_betls(f, &env->npc);

    qemu_get_betls(f, &env->y);

    tmp = qemu_get_be32(f);

    env->cwp = 0; /* needed to ensure that the wrapping registers are

                     correctly updated */

    PUT_PSR(env, tmp);

    qemu_get_betls(f, &env->fsr);

    qemu_get_betls(f, &env->tbr);

    tmp = qemu_get_be32(f);

    env->interrupt_index = tmp;

    qemu_get_be32s(f, &env->pil_in);

#ifndef TARGET_SPARC64

    qemu_get_be32s(f, &env->wim);

    /* MMU */

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

        qemu_get_be32s(f, &env->mmuregs[i]);

#else

    qemu_get_be64s(f, &env->lsu);

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

        qemu_get_be64s(f, &env->immuregs[i]);

        qemu_get_be64s(f, &env->dmmuregs[i]);

    }

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

        qemu_get_be64s(f, &env->itlb[i].tag);

        qemu_get_be64s(f, &env->itlb[i].tte);

        qemu_get_be64s(f, &env->dtlb[i].tag);

        qemu_get_be64s(f, &env->dtlb[i].tte);

    }

    qemu_get_be32s(f, &env->mmu_version);

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

        qemu_get_be64s(f, &env->ts[i].tpc);

        qemu_get_be64s(f, &env->ts[i].tnpc);

        qemu_get_be64s(f, &env->ts[i].tstate);

        qemu_get_be32s(f, &env->ts[i].tt);

    }

    qemu_get_be32s(f, &env->xcc);

    qemu_get_be32s(f, &env->asi);

    qemu_get_be32s(f, &env->pstate);

    qemu_get_be32s(f, &env->tl);

    env->tsptr = &env->ts[env->tl & MAXTL_MASK];

    qemu_get_be32s(f, &env->cansave);

    qemu_get_be32s(f, &env->canrestore);

    qemu_get_be32s(f, &env->otherwin);

    qemu_get_be32s(f, &env->wstate);

    qemu_get_be32s(f, &env->cleanwin);

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

        qemu_get_be64s(f, &env->agregs[i]);

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

        qemu_get_be64s(f, &env->bgregs[i]);

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

        qemu_get_be64s(f, &env->igregs[i]);

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

        qemu_get_be64s(f, &env->mgregs[i]);

    qemu_get_be64s(f, &env->fprs);

    qemu_get_be64s(f, &env->tick_cmpr);

    qemu_get_be64s(f, &env->stick_cmpr);

    qemu_get_ptimer(f, env->tick);

    qemu_get_ptimer(f, env->stick);

    qemu_get_be64s(f, &env->gsr);

    qemu_get_be32s(f, &env->gl);

    qemu_get_be64s(f, &env->hpstate);

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

        qemu_get_be64s(f, &env->htstate[i]);

    qemu_get_be64s(f, &env->hintp);

    qemu_get_be64s(f, &env->htba);

    qemu_get_be64s(f, &env->hver);

    qemu_get_be64s(f, &env->hstick_cmpr);

    qemu_get_be64s(f, &env->ssr);

    qemu_get_ptimer(f, env->hstick);

#endif

    tlb_flush(env, 1);

    return 0;

}

int cpu_load(QEMUFile *f, void *opaque, int version_id)

{

    CPUState *env = opaque;

    int i;

    uint32_t tmp;



    if (version_id != 5)

        return -EINVAL;

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

        qemu_get_betls(f, &env->gregs[i]);

    qemu_get_be32s(f, &env->nwindows);

    for(i = 0; i < env->nwindows * 16; i++)

        qemu_get_betls(f, &env->regbase[i]);



    

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

        union {

            float32 f;

            uint32_t i;

        } u;

        u.i = qemu_get_be32(f);

        env->fpr[i] = u.f;

    }



    qemu_get_betls(f, &env->pc);

    qemu_get_betls(f, &env->npc);

    qemu_get_betls(f, &env->y);

    tmp = qemu_get_be32(f);

    env->cwp = 0; 



    PUT_PSR(env, tmp);

    qemu_get_betls(f, &env->fsr);

    qemu_get_betls(f, &env->tbr);

    tmp = qemu_get_be32(f);

    env->interrupt_index = tmp;

    qemu_get_be32s(f, &env->pil_in);

#ifndef TARGET_SPARC64

    qemu_get_be32s(f, &env->wim);

    

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

        qemu_get_be32s(f, &env->mmuregs[i]);

#else

    qemu_get_be64s(f, &env->lsu);

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

        qemu_get_be64s(f, &env->immuregs[i]);

        qemu_get_be64s(f, &env->dmmuregs[i]);

    }

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

        qemu_get_be64s(f, &env->itlb[i].tag);

        qemu_get_be64s(f, &env->itlb[i].tte);

        qemu_get_be64s(f, &env->dtlb[i].tag);

        qemu_get_be64s(f, &env->dtlb[i].tte);

    }

    qemu_get_be32s(f, &env->mmu_version);

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

        qemu_get_be64s(f, &env->ts[i].tpc);

        qemu_get_be64s(f, &env->ts[i].tnpc);

        qemu_get_be64s(f, &env->ts[i].tstate);

        qemu_get_be32s(f, &env->ts[i].tt);

    }

    qemu_get_be32s(f, &env->xcc);

    qemu_get_be32s(f, &env->asi);

    qemu_get_be32s(f, &env->pstate);

    qemu_get_be32s(f, &env->tl);

    env->tsptr = &env->ts[env->tl & MAXTL_MASK];

    qemu_get_be32s(f, &env->cansave);

    qemu_get_be32s(f, &env->canrestore);

    qemu_get_be32s(f, &env->otherwin);

    qemu_get_be32s(f, &env->wstate);

    qemu_get_be32s(f, &env->cleanwin);

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

        qemu_get_be64s(f, &env->agregs[i]);

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

        qemu_get_be64s(f, &env->bgregs[i]);

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

        qemu_get_be64s(f, &env->igregs[i]);

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

        qemu_get_be64s(f, &env->mgregs[i]);

    qemu_get_be64s(f, &env->fprs);

    qemu_get_be64s(f, &env->tick_cmpr);

    qemu_get_be64s(f, &env->stick_cmpr);

    qemu_get_ptimer(f, env->tick);

    qemu_get_ptimer(f, env->stick);

    qemu_get_be64s(f, &env->gsr);

    qemu_get_be32s(f, &env->gl);

    qemu_get_be64s(f, &env->hpstate);

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

        qemu_get_be64s(f, &env->htstate[i]);

    qemu_get_be64s(f, &env->hintp);

    qemu_get_be64s(f, &env->htba);

    qemu_get_be64s(f, &env->hver);

    qemu_get_be64s(f, &env->hstick_cmpr);

    qemu_get_be64s(f, &env->ssr);

    qemu_get_ptimer(f, env->hstick);

#endif

    tlb_flush(env, 1);

    return 0;

}

    env->tsptr = &env->ts[env->tl & MAXTL_MASK];     env->tsptr = &env->ts[env->tl & MAXTL_MASK];     env->tsptr = &env->ts[env->tl & MAXTL_MASK];     env->tsptr = &env->ts[env->tl & MAXTL_MASK];     env->tsptr = &env->ts[env->tl & MAXTL_MASK];
int FUNC_0(QEMUFile *VAR_0, void *VAR_1, int VAR_2)

{

    CPUState *env = VAR_1;

    int VAR_3;

    uint32_t tmp;



    if (VAR_2 != 5)

        return -EINVAL;

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

        qemu_get_betls(VAR_0, &env->gregs[VAR_3]);

    qemu_get_be32s(VAR_0, &env->nwindows);

    for(VAR_3 = 0; VAR_3 < env->nwindows * 16; VAR_3++)

        qemu_get_betls(VAR_0, &env->regbase[VAR_3]);



    

    for(VAR_3 = 0; VAR_3 < TARGET_FPREGS; VAR_3++) {

        union {

            float32 VAR_0;

            uint32_t VAR_3;

        } u;

        u.VAR_3 = qemu_get_be32(VAR_0);

        env->fpr[VAR_3] = u.VAR_0;

    }



    qemu_get_betls(VAR_0, &env->pc);

    qemu_get_betls(VAR_0, &env->npc);

    qemu_get_betls(VAR_0, &env->y);

    tmp = qemu_get_be32(VAR_0);

    env->cwp = 0; 



    PUT_PSR(env, tmp);

    qemu_get_betls(VAR_0, &env->fsr);

    qemu_get_betls(VAR_0, &env->tbr);

    tmp = qemu_get_be32(VAR_0);

    env->interrupt_index = tmp;

    qemu_get_be32s(VAR_0, &env->pil_in);

#ifndef TARGET_SPARC64

    qemu_get_be32s(VAR_0, &env->wim);

    

    for (VAR_3 = 0; VAR_3 < 32; VAR_3++)

        qemu_get_be32s(VAR_0, &env->mmuregs[VAR_3]);

#else

    qemu_get_be64s(VAR_0, &env->lsu);

    for (VAR_3 = 0; VAR_3 < 16; VAR_3++) {

        qemu_get_be64s(VAR_0, &env->immuregs[VAR_3]);

        qemu_get_be64s(VAR_0, &env->dmmuregs[VAR_3]);

    }

    for (VAR_3 = 0; VAR_3 < 64; VAR_3++) {

        qemu_get_be64s(VAR_0, &env->itlb[VAR_3].tag);

        qemu_get_be64s(VAR_0, &env->itlb[VAR_3].tte);

        qemu_get_be64s(VAR_0, &env->dtlb[VAR_3].tag);

        qemu_get_be64s(VAR_0, &env->dtlb[VAR_3].tte);

    }

    qemu_get_be32s(VAR_0, &env->mmu_version);

    for (VAR_3 = 0; VAR_3 < MAXTL_MAX; VAR_3++) {

        qemu_get_be64s(VAR_0, &env->ts[VAR_3].tpc);

        qemu_get_be64s(VAR_0, &env->ts[VAR_3].tnpc);

        qemu_get_be64s(VAR_0, &env->ts[VAR_3].tstate);

        qemu_get_be32s(VAR_0, &env->ts[VAR_3].tt);

    }

    qemu_get_be32s(VAR_0, &env->xcc);

    qemu_get_be32s(VAR_0, &env->asi);

    qemu_get_be32s(VAR_0, &env->pstate);

    qemu_get_be32s(VAR_0, &env->tl);

    env->tsptr = &env->ts[env->tl & MAXTL_MASK];

    qemu_get_be32s(VAR_0, &env->cansave);

    qemu_get_be32s(VAR_0, &env->canrestore);

    qemu_get_be32s(VAR_0, &env->otherwin);

    qemu_get_be32s(VAR_0, &env->wstate);

    qemu_get_be32s(VAR_0, &env->cleanwin);

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

        qemu_get_be64s(VAR_0, &env->agregs[VAR_3]);

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

        qemu_get_be64s(VAR_0, &env->bgregs[VAR_3]);

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

        qemu_get_be64s(VAR_0, &env->igregs[VAR_3]);

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

        qemu_get_be64s(VAR_0, &env->mgregs[VAR_3]);

    qemu_get_be64s(VAR_0, &env->fprs);

    qemu_get_be64s(VAR_0, &env->tick_cmpr);

    qemu_get_be64s(VAR_0, &env->stick_cmpr);

    qemu_get_ptimer(VAR_0, env->tick);

    qemu_get_ptimer(VAR_0, env->stick);

    qemu_get_be64s(VAR_0, &env->gsr);

    qemu_get_be32s(VAR_0, &env->gl);

    qemu_get_be64s(VAR_0, &env->hpstate);

    for (VAR_3 = 0; VAR_3 < MAXTL_MAX; VAR_3++)

        qemu_get_be64s(VAR_0, &env->htstate[VAR_3]);

    qemu_get_be64s(VAR_0, &env->hintp);

    qemu_get_be64s(VAR_0, &env->htba);

    qemu_get_be64s(VAR_0, &env->hver);

    qemu_get_be64s(VAR_0, &env->hstick_cmpr);

    qemu_get_be64s(VAR_0, &env->ssr);

    qemu_get_ptimer(VAR_0, env->hstick);

#endif

    tlb_flush(env, 1);

    return 0;

}

int FUNC_0(QEMUFile *VAR_0, void *VAR_1, int VAR_2)
{ CPUState *env = VAR_1; int VAR_3; uint32_t tmp; if (VAR_2 != 5)
return -EINVAL; for(VAR_3 = 0; VAR_3 < 8; VAR_3++) qemu_get_betls(VAR_0, &env->gregs[VAR_3]); qemu_get_be32s(VAR_0, &env->nwindows); for(VAR_3 = 0; VAR_3 < env->nwindows * 16; VAR_3++) qemu_get_betls(VAR_0, &env->regbase[VAR_3]); for(VAR_3 = 0; VAR_3 < TARGET_FPREGS; VAR_3++) { union { float32 VAR_0; uint32_t VAR_3; } u; u.VAR_3 = qemu_get_be32(VAR_0); env->fpr[VAR_3] = u.VAR_0; } qemu_get_betls(VAR_0, &env->pc); qemu_get_betls(VAR_0, &env->npc); qemu_get_betls(VAR_0, &env->y); tmp = qemu_get_be32(VAR_0); env->cwp = 0; PUT_PSR(env, tmp); qemu_get_betls(VAR_0, &env->fsr); qemu_get_betls(VAR_0, &env->tbr); tmp = qemu_get_be32(VAR_0); env->interrupt_index = tmp; qemu_get_be32s(VAR_0, &env->pil_in); #ifndef TARGET_SPARC64
qemu_get_be32s(VAR_0, &env->wim); for (VAR_3 = 0; VAR_3 < 32; VAR_3++) qemu_get_be32s(VAR_0, &env->mmuregs[VAR_3]); #else
qemu_get_be64s(VAR_0, &env->lsu); for (VAR_3 = 0; VAR_3 < 16; VAR_3++) { qemu_get_be64s(VAR_0, &env->immuregs[VAR_3]); qemu_get_be64s(VAR_0, &env->dmmuregs[VAR_3]); } for (VAR_3 = 0; VAR_3 < 64; VAR_3++) { qemu_get_be64s(VAR_0, &env->itlb[VAR_3].tag); qemu_get_be64s(VAR_0, &env->itlb[VAR_3].tte); qemu_get_be64s(VAR_0, &env->dtlb[VAR_3].tag); qemu_get_be64s(VAR_0, &env->dtlb[VAR_3].tte); } qemu_get_be32s(VAR_0, &env->mmu_version); for (VAR_3 = 0; VAR_3 < MAXTL_MAX; VAR_3++) { qemu_get_be64s(VAR_0, &env->ts[VAR_3].tpc); qemu_get_be64s(VAR_0, &env->ts[VAR_3].tnpc); qemu_get_be64s(VAR_0, &env->ts[VAR_3].tstate); qemu_get_be32s(VAR_0, &env->ts[VAR_3].tt); } qemu_get_be32s(VAR_0, &env->xcc); qemu_get_be32s(VAR_0, &env->asi); qemu_get_be32s(VAR_0, &env->pstate); qemu_get_be32s(VAR_0, &env->tl); env->tsptr = &env->ts[env->tl & MAXTL_MASK]; qemu_get_be32s(VAR_0, &env->cansave); qemu_get_be32s(VAR_0, &env->canrestore); qemu_get_be32s(VAR_0, &env->otherwin); qemu_get_be32s(VAR_0, &env->wstate); qemu_get_be32s(VAR_0, &env->cleanwin); for (VAR_3 = 0; VAR_3 < 8; VAR_3++) qemu_get_be64s(VAR_0, &env->agregs[VAR_3]); for (VAR_3 = 0; VAR_3 < 8; VAR_3++) qemu_get_be64s(VAR_0, &env->bgregs[VAR_3]); for (VAR_3 = 0; VAR_3 < 8; VAR_3++) qemu_get_be64s(VAR_0, &env->igregs[VAR_3]); for (VAR_3 = 0; VAR_3 < 8; VAR_3++) qemu_get_be64s(VAR_0, &env->mgregs[VAR_3]); qemu_get_be64s(VAR_0, &env->fprs); qemu_get_be64s(VAR_0, &env->tick_cmpr); qemu_get_be64s(VAR_0, &env->stick_cmpr); qemu_get_ptimer(VAR_0, env->tick); qemu_get_ptimer(VAR_0, env->stick); qemu_get_be64s(VAR_0, &env->gsr); qemu_get_be32s(VAR_0, &env->gl); qemu_get_be64s(VAR_0, &env->hpstate); for (VAR_3 = 0; VAR_3 < MAXTL_MAX; VAR_3++) qemu_get_be64s(VAR_0, &env->htstate[VAR_3]); qemu_get_be64s(VAR_0, &env->hintp); qemu_get_be64s(VAR_0, &env->htba); qemu_get_be64s(VAR_0, &env->hver); qemu_get_be64s(VAR_0, &env->hstick_cmpr); qemu_get_be64s(VAR_0, &env->ssr); qemu_get_ptimer(VAR_0, env->hstick); #endif
tlb_flush(env, 1); return 0; }