OSDN Git Service

cpu-exec: Also reload CPUClass *cc after longjmp return in cpu_exec()
authorJuergen Lock <qemu-l@jelal.kn-bremen.de>
Thu, 3 Oct 2013 14:09:37 +0000 (16:09 +0200)
committerAndreas Färber <afaerber@suse.de>
Mon, 7 Oct 2013 09:46:58 +0000 (11:46 +0200)
Local variable CPUClass *cc needs to be reloaded after return from longjmp,
too.  (This fixes a mips-softmmu crash observed on FreeBSD when QEMU is
built with clang.)

Reported-by: Dimitry Andric <dim@FreeBSD.org>
Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de>
Signed-off-by: Andreas Färber <afaerber@suse.de>
cpu-exec.c

index 5a43995..30cfa2a 100644 (file)
@@ -681,6 +681,10 @@ int cpu_exec(CPUArchState *env)
              * local variables as longjmp is marked 'noreturn'. */
             cpu = current_cpu;
             env = cpu->env_ptr;
+#if !(defined(CONFIG_USER_ONLY) && \
+      (defined(TARGET_M68K) || defined(TARGET_PPC) || defined(TARGET_S390X)))
+            cc = CPU_GET_CLASS(cpu);
+#endif
         }
     } /* for(;;) */