diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index aa936df..4fa1729 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -789,8 +789,8 @@
 
     /* FPU state */
     unsigned int fpstt; /* top of stack index */
-    unsigned int fpus;
-    unsigned int fpuc;
+    uint16_t fpus;
+    uint16_t fpuc;
     uint8_t fptags[8];   /* 0 = valid, 1 = empty */
     FPReg fpregs[8];
 
@@ -883,6 +883,9 @@
     uint64 mcg_status;
     uint64 mcg_ctl;
     uint64 *mce_banks;
+
+    /* vmstate */
+    uint16_t fpus_vmstate;
 } CPUX86State;
 
 #include "cpu-qom.h"
diff --git a/target-i386/machine.c b/target-i386/machine.c
index 603fe42..d4f0a40 100644
--- a/target-i386/machine.c
+++ b/target-i386/machine.c
@@ -25,7 +25,7 @@
 void cpu_save(QEMUFile *f, void *opaque)
 {
     CPUX86State *env = opaque;
-    uint16_t fptag, fpus, fpuc, fpregs_format;
+    uint16_t fptag, fpregs_format;
     uint32_t hflags;
     int i;
 
@@ -39,15 +39,14 @@
     qemu_put_be32s(f, &hflags);
 
     /* FPU */
-    fpuc = env->fpuc;
-    fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
+    env->fpus_vmstate = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
     fptag = 0;
     for(i = 0; i < 8; i++) {
         fptag |= ((!env->fptags[i]) << i);
     }
 
-    qemu_put_be16s(f, &fpuc);
-    qemu_put_be16s(f, &fpus);
+    qemu_put_be16s(f, &env->fpuc);
+    qemu_put_be16s(f, &env->fpus_vmstate);
     qemu_put_be16s(f, &fptag);
 
     fpregs_format = 1;
@@ -148,7 +147,7 @@
     CPUX86State *env = opaque;
     int i, guess_mmx;
     uint32_t hflags;
-    uint16_t fpus, fpuc, fptag, fpregs_format;
+    uint16_t fptag, fpregs_format;
 
     if (version_id < 3 || version_id > CPU_SAVE_VERSION)
         return -EINVAL;
@@ -158,15 +157,15 @@
     qemu_get_betls(f, &env->eflags);
     qemu_get_be32s(f, &hflags);
 
-    qemu_get_be16s(f, &fpuc);
-    qemu_get_be16s(f, &fpus);
+    qemu_get_be16s(f, &env->fpuc);
+    qemu_get_be16s(f, &env->fpus_vmstate);
     qemu_get_be16s(f, &fptag);
     qemu_get_be16s(f, &fpregs_format);
 
     /* NOTE: we cannot always restore the FPU state if the image come
        from a host with a different 'USE_X86LDOUBLE' define. We guess
        if we are in an MMX state to restore correctly in that case. */
-    guess_mmx = ((fptag == 0xff) && (fpus & 0x3800) == 0);
+    guess_mmx = ((fptag == 0xff) && (env->fpus_vmstate & 0x3800) == 0);
     for(i = 0; i < 8; i++) {
         uint64_t mant;
         uint16_t exp;
@@ -190,10 +189,9 @@
         }
     }
 
-    env->fpuc = fpuc;
     /* XXX: restore FPU round state */
-    env->fpstt = (fpus >> 11) & 7;
-    env->fpus = fpus & ~0x3800;
+    env->fpstt = (env->fpus_vmstate >> 11) & 7;
+    env->fpus = env->fpus_vmstate & ~0x3800;
     fptag ^= 0xff;
     for(i = 0; i < 8; i++) {
         env->fptags[i] = (fptag >> i) & 1;
