]> xenbits.xensource.com Git - qemu-upstream-4.6-testing.git/commitdiff
target-mips: fix broken snapshotting
authorLeon Alrae <leon.alrae@imgtec.com>
Mon, 26 Jan 2015 16:49:42 +0000 (16:49 +0000)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Mon, 2 Mar 2015 00:09:42 +0000 (18:09 -0600)
Recently added CP0.BadInstr and CP0.BadInstrP registers ended up in cpu_load()
under different offset than in cpu_save(). These and all registers between were
incorrectly restored.

Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
(cherry picked from commit b40a1530f294b5fa4479dc3ca9bf46c269d08d87)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
target-mips/machine.c

index 0ba7d736dbf6736a17d51457bb3b8f80dff93bbe..6c76dfbe0388dab4c3b196676e4f6775c2757c74 100644 (file)
@@ -285,6 +285,10 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
     qemu_get_sbe32s(f, &env->CP0_SRSConf4);
     qemu_get_sbe32s(f, &env->CP0_HWREna);
     qemu_get_betls(f, &env->CP0_BadVAddr);
+    if (version_id >= 5) {
+        qemu_get_be32s(f, &env->CP0_BadInstr);
+        qemu_get_be32s(f, &env->CP0_BadInstrP);
+    }
     qemu_get_sbe32s(f, &env->CP0_Count);
     qemu_get_betls(f, &env->CP0_EntryHi);
     qemu_get_sbe32s(f, &env->CP0_Compare);
@@ -319,8 +323,6 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id)
     qemu_get_betls(f, &env->CP0_ErrorEPC);
     qemu_get_sbe32s(f, &env->CP0_DESAVE);
     if (version_id >= 5) {
-        qemu_get_be32s(f, &env->CP0_BadInstr);
-        qemu_get_be32s(f, &env->CP0_BadInstrP);
         for (i = 0; i < MIPS_KSCRATCH_NUM; i++) {
             qemu_get_betls(f, &env->CP0_KScratch[i]);
         }