Revision 60a902f1 target-i386/machine.c
b/target-i386/machine.c | ||
---|---|---|
26 | 26 |
void cpu_save(QEMUFile *f, void *opaque) |
27 | 27 |
{ |
28 | 28 |
CPUState *env = opaque; |
29 |
uint16_t fpregs_format; |
|
30 | 29 |
int i, bit; |
31 | 30 |
|
32 | 31 |
cpu_synchronize_state(env); |
... | ... | |
49 | 48 |
qemu_put_be16s(f, &env->fptag_vmstate); |
50 | 49 |
|
51 | 50 |
#ifdef USE_X86LDOUBLE |
52 |
fpregs_format = 0;
|
|
51 |
env->fpregs_format_vmstate = 0;
|
|
53 | 52 |
#else |
54 |
fpregs_format = 1;
|
|
53 |
env->fpregs_format_vmstate = 1;
|
|
55 | 54 |
#endif |
56 |
qemu_put_be16s(f, &fpregs_format);
|
|
55 |
qemu_put_be16s(f, &env->fpregs_format_vmstate);
|
|
57 | 56 |
|
58 | 57 |
for(i = 0; i < 8; i++) { |
59 | 58 |
#ifdef USE_X86LDOUBLE |
... | ... | |
196 | 195 |
{ |
197 | 196 |
CPUState *env = opaque; |
198 | 197 |
int i, guess_mmx; |
199 |
uint16_t fpregs_format; |
|
200 | 198 |
|
201 | 199 |
cpu_synchronize_state(env); |
202 | 200 |
if (version_id < 3 || version_id > CPU_SAVE_VERSION) |
... | ... | |
210 | 208 |
qemu_get_be16s(f, &env->fpuc); |
211 | 209 |
qemu_get_be16s(f, &env->fpus_vmstate); |
212 | 210 |
qemu_get_be16s(f, &env->fptag_vmstate); |
213 |
qemu_get_be16s(f, &fpregs_format);
|
|
211 |
qemu_get_be16s(f, &env->fpregs_format_vmstate);
|
|
214 | 212 |
|
215 | 213 |
/* NOTE: we cannot always restore the FPU state if the image come |
216 | 214 |
from a host with a different 'USE_X86LDOUBLE' define. We guess |
... | ... | |
220 | 218 |
uint64_t mant; |
221 | 219 |
uint16_t exp; |
222 | 220 |
|
223 |
switch(fpregs_format) {
|
|
221 |
switch(env->fpregs_format_vmstate) {
|
|
224 | 222 |
case 0: |
225 | 223 |
mant = qemu_get_be64(f); |
226 | 224 |
exp = qemu_get_be16(f); |
Also available in: Unified diff