Revision eb831623

b/target-i386/cpu.h
594 594
    /* FPU state */
595 595
    unsigned int fpstt; /* top of stack index */
596 596
    unsigned int fpus;
597
    unsigned int fpuc;
597
    uint16_t fpuc;
598 598
    uint8_t fptags[8];   /* 0 = valid, 1 = empty */
599 599
    union {
600 600
#ifdef USE_X86LDOUBLE
b/target-i386/machine.c
26 26
void cpu_save(QEMUFile *f, void *opaque)
27 27
{
28 28
    CPUState *env = opaque;
29
    uint16_t fptag, fpus, fpuc, fpregs_format;
29
    uint16_t fptag, fpus, fpregs_format;
30 30
    int32_t pending_irq;
31 31
    int i, bit;
32 32

  
......
39 39
    qemu_put_be32s(f, &env->hflags);
40 40

  
41 41
    /* FPU */
42
    fpuc = env->fpuc;
43 42
    fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
44 43
    fptag = 0;
45 44
    for(i = 0; i < 8; i++) {
46 45
        fptag |= ((!env->fptags[i]) << i);
47 46
    }
48 47

  
49
    qemu_put_be16s(f, &fpuc);
48
    qemu_put_be16s(f, &env->fpuc);
50 49
    qemu_put_be16s(f, &fpus);
51 50
    qemu_put_be16s(f, &fptag);
52 51

  
......
198 197
{
199 198
    CPUState *env = opaque;
200 199
    int i, guess_mmx;
201
    uint16_t fpus, fpuc, fptag, fpregs_format;
200
    uint16_t fpus, fptag, fpregs_format;
202 201
    int32_t pending_irq;
203 202

  
204 203
    cpu_synchronize_state(env);
......
210 209
    qemu_get_betls(f, &env->eflags);
211 210
    qemu_get_be32s(f, &env->hflags);
212 211

  
213
    qemu_get_be16s(f, &fpuc);
212
    qemu_get_be16s(f, &env->fpuc);
214 213
    qemu_get_be16s(f, &fpus);
215 214
    qemu_get_be16s(f, &fptag);
216 215
    qemu_get_be16s(f, &fpregs_format);
......
260 259
        }
261 260
    }
262 261

  
263
    env->fpuc = fpuc;
264 262
    /* XXX: restore FPU round state */
265 263
    env->fpstt = (fpus >> 11) & 7;
266 264
    env->fpus = fpus & ~0x3800;

Also available in: Unified diff