Revision 4fa5d772 vl.c
b/vl.c | ||
---|---|---|
2328 | 2328 |
int i; |
2329 | 2329 |
uint32_t tmp; |
2330 | 2330 |
|
2331 |
for(i = 1; i < 8; i++) |
|
2332 |
qemu_put_be32s(f, &env->gregs[i]); |
|
2333 |
tmp = env->regwptr - env->regbase; |
|
2334 |
qemu_put_be32s(f, &tmp); |
|
2335 |
for(i = 1; i < NWINDOWS * 16 + 8; i++) |
|
2336 |
qemu_put_be32s(f, &env->regbase[i]); |
|
2331 |
for(i = 0; i < 8; i++) |
|
2332 |
qemu_put_betls(f, &env->gregs[i]); |
|
2333 |
for(i = 0; i < NWINDOWS * 16; i++) |
|
2334 |
qemu_put_betls(f, &env->regbase[i]); |
|
2337 | 2335 |
|
2338 | 2336 |
/* FPU */ |
2339 |
for(i = 0; i < 32; i++) { |
|
2340 |
uint64_t mant; |
|
2341 |
uint16_t exp; |
|
2342 |
cpu_get_fp64(&mant, &exp, env->fpr[i]); |
|
2343 |
qemu_put_be64(f, mant); |
|
2344 |
qemu_put_be16(f, exp); |
|
2345 |
} |
|
2346 |
qemu_put_be32s(f, &env->pc); |
|
2347 |
qemu_put_be32s(f, &env->npc); |
|
2348 |
qemu_put_be32s(f, &env->y); |
|
2337 |
for(i = 0; i < TARGET_FPREGS; i++) { |
|
2338 |
union { |
|
2339 |
TARGET_FPREG_T f; |
|
2340 |
target_ulong i; |
|
2341 |
} u; |
|
2342 |
u.f = env->fpr[i]; |
|
2343 |
qemu_put_betl(f, u.i); |
|
2344 |
} |
|
2345 |
|
|
2346 |
qemu_put_betls(f, &env->pc); |
|
2347 |
qemu_put_betls(f, &env->npc); |
|
2348 |
qemu_put_betls(f, &env->y); |
|
2349 | 2349 |
tmp = GET_PSR(env); |
2350 |
qemu_put_be32s(f, &tmp);
|
|
2350 |
qemu_put_be32(f, tmp);
|
|
2351 | 2351 |
qemu_put_be32s(f, &env->fsr); |
2352 |
qemu_put_be32s(f, &env->cwp); |
|
2353 | 2352 |
qemu_put_be32s(f, &env->wim); |
2354 | 2353 |
qemu_put_be32s(f, &env->tbr); |
2355 | 2354 |
/* MMU */ |
... | ... | |
2363 | 2362 |
int i; |
2364 | 2363 |
uint32_t tmp; |
2365 | 2364 |
|
2366 |
for(i = 1; i < 8; i++) |
|
2367 |
qemu_get_be32s(f, &env->gregs[i]); |
|
2368 |
qemu_get_be32s(f, &tmp); |
|
2369 |
env->regwptr = env->regbase + tmp; |
|
2370 |
for(i = 1; i < NWINDOWS * 16 + 8; i++) |
|
2371 |
qemu_get_be32s(f, &env->regbase[i]); |
|
2365 |
for(i = 0; i < 8; i++) |
|
2366 |
qemu_get_betls(f, &env->gregs[i]); |
|
2367 |
for(i = 0; i < NWINDOWS * 16; i++) |
|
2368 |
qemu_get_betls(f, &env->regbase[i]); |
|
2372 | 2369 |
|
2373 | 2370 |
/* FPU */ |
2374 |
for(i = 0; i < 32; i++) { |
|
2375 |
uint64_t mant; |
|
2376 |
uint16_t exp; |
|
2377 |
|
|
2378 |
qemu_get_be64s(f, &mant); |
|
2379 |
qemu_get_be16s(f, &exp); |
|
2380 |
env->fpr[i] = cpu_put_fp64(mant, exp); |
|
2381 |
} |
|
2382 |
qemu_get_be32s(f, &env->pc); |
|
2383 |
qemu_get_be32s(f, &env->npc); |
|
2384 |
qemu_get_be32s(f, &env->y); |
|
2385 |
qemu_get_be32s(f, &tmp); |
|
2371 |
for(i = 0; i < TARGET_FPREGS; i++) { |
|
2372 |
union { |
|
2373 |
TARGET_FPREG_T f; |
|
2374 |
target_ulong i; |
|
2375 |
} u; |
|
2376 |
u.i = qemu_get_betl(f); |
|
2377 |
env->fpr[i] = u.f; |
|
2378 |
} |
|
2379 |
|
|
2380 |
qemu_get_betls(f, &env->pc); |
|
2381 |
qemu_get_betls(f, &env->npc); |
|
2382 |
qemu_get_betls(f, &env->y); |
|
2383 |
tmp = qemu_get_be32(f); |
|
2384 |
env->cwp = 0; /* needed to ensure that the wrapping registers are |
|
2385 |
correctly updated */ |
|
2386 | 2386 |
PUT_PSR(env, tmp); |
2387 | 2387 |
qemu_get_be32s(f, &env->fsr); |
2388 |
qemu_get_be32s(f, &env->cwp); |
|
2389 | 2388 |
qemu_get_be32s(f, &env->wim); |
2390 | 2389 |
qemu_get_be32s(f, &env->tbr); |
2391 | 2390 |
/* MMU */ |
2392 | 2391 |
for(i = 0; i < 16; i++) |
2393 | 2392 |
qemu_get_be32s(f, &env->mmuregs[i]); |
2393 |
|
|
2394 | 2394 |
tlb_flush(env, 1); |
2395 | 2395 |
return 0; |
2396 | 2396 |
} |
Also available in: Unified diff