qemu: introduce qemu_init_vcpu (Marcelo Tosatti)

Signed-off-by: Marcelo Tosatti <[email protected]>
Signed-off-by: Anthony Liguori <[email protected]>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7242 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/qemu-common.h b/qemu-common.h
index ee963c1..e6a555e 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -189,6 +189,12 @@
 /* Force QEMU to process pending events */
 void qemu_notify_event(void);
 
+#ifdef CONFIG_USER_ONLY
+#define qemu_init_vcpu(env) do { } while (0)
+#else
+void qemu_init_vcpu(void *env);
+#endif
+
 typedef struct QEMUIOVector {
     struct iovec *iov;
     int niov;
diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 00751f5..4cd24d8 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -2505,6 +2505,7 @@
     env->ipr[IPR_SISR] = 0;
     env->ipr[IPR_VIRBND] = -1ULL;
 
+    qemu_init_vcpu(env);
     return env;
 }
 
diff --git a/target-arm/helper.c b/target-arm/helper.c
index 3464142..701629a 100644
--- a/target-arm/helper.c
+++ b/target-arm/helper.c
@@ -267,6 +267,7 @@
         gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg,
                                  19, "arm-vfp.xml", 0);
     }
+    qemu_init_vcpu(env);
     return env;
 }
 
diff --git a/target-cris/translate.c b/target-cris/translate.c
index d9256ca..e12be4e 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -3405,6 +3405,7 @@
 
 	cpu_exec_init(env);
 	cpu_reset(env);
+	qemu_init_vcpu(env);
 
 	if (tcg_initialized)
 		return env;
diff --git a/target-i386/helper.c b/target-i386/helper.c
index f107d50..a070e08 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1692,7 +1692,8 @@
 #ifdef CONFIG_KQEMU
     kqemu_init(env);
 #endif
-    if (kvm_enabled())
-        kvm_init_vcpu(env);
+
+    qemu_init_vcpu(env);
+
     return env;
 }
diff --git a/target-m68k/helper.c b/target-m68k/helper.c
index 493498e..ad28322 100644
--- a/target-m68k/helper.c
+++ b/target-m68k/helper.c
@@ -180,6 +180,7 @@
     }
 
     cpu_reset(env);
+    qemu_init_vcpu(env);
     return env;
 }
 
diff --git a/target-mips/translate.c b/target-mips/translate.c
index e8ecb6e..e96fe60 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -8551,6 +8551,7 @@
     env->cpu_model_str = cpu_model;
     mips_tcg_init();
     cpu_reset(env);
+    qemu_init_vcpu(env);
     return env;
 }
 
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index a0d884e..f1663ce 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -2831,8 +2831,7 @@
     cpu_ppc_register_internal(env, def);
     cpu_ppc_reset(env);
 
-    if (kvm_enabled())
-        kvm_init_vcpu(env);
+    qemu_init_vcpu(env);
 
     return env;
 }
diff --git a/target-sh4/translate.c b/target-sh4/translate.c
index aa3b9d4..fc3633a 100644
--- a/target-sh4/translate.c
+++ b/target-sh4/translate.c
@@ -290,6 +290,7 @@
     cpu_sh4_reset(env);
     cpu_sh4_register(env, def);
     tlb_flush(env, 1);
+    qemu_init_vcpu(env);
     return env;
 }
 
diff --git a/target-sparc/helper.c b/target-sparc/helper.c
index b39b162..428f97d 100644
--- a/target-sparc/helper.c
+++ b/target-sparc/helper.c
@@ -723,6 +723,7 @@
         return NULL;
     }
     cpu_reset(env);
+    qemu_init_vcpu(env);
 
     return env;
 }
diff --git a/vl.c b/vl.c
index a0dcdea..7440464 100644
--- a/vl.c
+++ b/vl.c
@@ -3731,6 +3731,15 @@
     return qemu_event_init();
 }
 
+void qemu_init_vcpu(void *_env)
+{
+    CPUState *env = _env;
+
+    if (kvm_enabled())
+        kvm_init_vcpu(env);
+    return;
+}
+
 #ifdef _WIN32
 static void host_main_loop_wait(int *timeout)
 {