Revision e80cfcfc vl.c

b/vl.c
2214 2214
#elif defined(TARGET_SPARC)
2215 2215
void cpu_save(QEMUFile *f, void *opaque)
2216 2216
{
2217
    CPUState *env = opaque;
2218
    int i;
2219
    uint32_t tmp;
2220

  
2221
    for(i = 1; i < 8; i++)
2222
        qemu_put_be32s(f, &env->gregs[i]);
2223
    tmp = env->regwptr - env->regbase;
2224
    qemu_put_be32s(f, &tmp);
2225
    for(i = 1; i < NWINDOWS * 16 + 8; i++)
2226
        qemu_put_be32s(f, &env->regbase[i]);
2227

  
2228
    /* FPU */
2229
    for(i = 0; i < 32; i++) {
2230
        uint64_t mant;
2231
        uint16_t exp;
2232
	cpu_get_fp64(&mant, &exp, env->fpr[i]);
2233
        qemu_put_be64(f, mant);
2234
        qemu_put_be16(f, exp);
2235
    }
2236
    qemu_put_be32s(f, &env->pc);
2237
    qemu_put_be32s(f, &env->npc);
2238
    qemu_put_be32s(f, &env->y);
2239
    tmp = GET_PSR(env);
2240
    qemu_put_be32s(f, &tmp);
2241
    qemu_put_be32s(f, &env->fsr);
2242
    qemu_put_be32s(f, &env->cwp);
2243
    qemu_put_be32s(f, &env->wim);
2244
    qemu_put_be32s(f, &env->tbr);
2245
    /* MMU */
2246
    for(i = 0; i < 16; i++)
2247
        qemu_put_be32s(f, &env->mmuregs[i]);
2217 2248
}
2218 2249

  
2219 2250
int cpu_load(QEMUFile *f, void *opaque, int version_id)
2220 2251
{
2252
    CPUState *env = opaque;
2253
    int i;
2254
    uint32_t tmp;
2255

  
2256
    for(i = 1; i < 8; i++)
2257
        qemu_get_be32s(f, &env->gregs[i]);
2258
    qemu_get_be32s(f, &tmp);
2259
    env->regwptr = env->regbase + tmp;
2260
    for(i = 1; i < NWINDOWS * 16 + 8; i++)
2261
        qemu_get_be32s(f, &env->regbase[i]);
2262

  
2263
    /* FPU */
2264
    for(i = 0; i < 32; i++) {
2265
        uint64_t mant;
2266
        uint16_t exp;
2267

  
2268
        qemu_get_be64s(f, &mant);
2269
        qemu_get_be16s(f, &exp);
2270
	env->fpr[i] = cpu_put_fp64(mant, exp);
2271
    }
2272
    qemu_get_be32s(f, &env->pc);
2273
    qemu_get_be32s(f, &env->npc);
2274
    qemu_get_be32s(f, &env->y);
2275
    qemu_get_be32s(f, &tmp);
2276
    PUT_PSR(env, tmp);
2277
    qemu_get_be32s(f, &env->fsr);
2278
    qemu_get_be32s(f, &env->cwp);
2279
    qemu_get_be32s(f, &env->wim);
2280
    qemu_get_be32s(f, &env->tbr);
2281
    /* MMU */
2282
    for(i = 0; i < 16; i++)
2283
        qemu_get_be32s(f, &env->mmuregs[i]);
2284
    tlb_flush(env, 1);
2221 2285
    return 0;
2222 2286
}
2223 2287
#else
......
2388 2452

  
2389 2453
static void main_cpu_reset(void *opaque)
2390 2454
{
2391
#ifdef TARGET_I386
2455
#if defined(TARGET_I386) || defined(TARGET_SPARC)
2392 2456
    CPUState *env = opaque;
2393 2457
    cpu_reset(env);
2394 2458
#endif

Also available in: Unified diff