qemu: introduce qemu_init_vcpu (Marcelo Tosatti)
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Fri, 24 Apr 2009 18:03:41 +0000 (18:03 +0000)
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>
Fri, 24 Apr 2009 18:03:41 +0000 (18:03 +0000)
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7242 c046a42c-6fe2-441c-8c8c-71466251a162

qemu-common.h
target-alpha/translate.c
target-arm/helper.c
target-cris/translate.c
target-i386/helper.c
target-m68k/helper.c
target-mips/translate.c
target-ppc/helper.c
target-sh4/translate.c
target-sparc/helper.c
vl.c

index ee963c11ded6ad85e61bbb77dd89523bf38f3f02..e6a555e53171f99c9bb2ce8e20c139674074b476 100644 (file)
@@ -189,6 +189,12 @@ void qemu_service_io(void);
 /* 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;
index 00751f517488d2c0b5c0458372cf7b7a5f2cd1e1..4cd24d847feb4209ad4998046558f6ce14bfb273 100644 (file)
@@ -2505,6 +2505,7 @@ CPUAlphaState * cpu_alpha_init (const char *cpu_model)
     env->ipr[IPR_SISR] = 0;
     env->ipr[IPR_VIRBND] = -1ULL;
 
+    qemu_init_vcpu(env);
     return env;
 }
 
index 34641428df4bebd98f2f505da53ba1ca1d7ababc..701629af3a6a049c645df75404dbcc8ba93599c1 100644 (file)
@@ -267,6 +267,7 @@ CPUARMState *cpu_arm_init(const char *cpu_model)
         gdb_register_coprocessor(env, vfp_gdb_get_reg, vfp_gdb_set_reg,
                                  19, "arm-vfp.xml", 0);
     }
+    qemu_init_vcpu(env);
     return env;
 }
 
index d9256ca4236a212deb2e175a06ec98bbf0137324..e12be4ef117c5f000028f44ef77152766235d0e2 100644 (file)
@@ -3405,6 +3405,7 @@ CPUCRISState *cpu_cris_init (const char *cpu_model)
 
        cpu_exec_init(env);
        cpu_reset(env);
+       qemu_init_vcpu(env);
 
        if (tcg_initialized)
                return env;
index f107d5022f8250becf9f9951fd433b44264d52ef..a070e08a6c3757cd1649a680e4a9453c98dbda6f 100644 (file)
@@ -1692,7 +1692,8 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
 #ifdef CONFIG_KQEMU
     kqemu_init(env);
 #endif
-    if (kvm_enabled())
-        kvm_init_vcpu(env);
+
+    qemu_init_vcpu(env);
+
     return env;
 }
index 493498e9b4dd7a7490c0095582c01bafb4128492..ad2832244342f6b81da49a7506f06b740712914e 100644 (file)
@@ -180,6 +180,7 @@ CPUM68KState *cpu_m68k_init(const char *cpu_model)
     }
 
     cpu_reset(env);
+    qemu_init_vcpu(env);
     return env;
 }
 
index e8ecb6e415acb7446e2df132aca87ac39ff24f32..e96fe60fd2754810433bd8d1082503a1c159f8db 100644 (file)
@@ -8551,6 +8551,7 @@ CPUMIPSState *cpu_mips_init (const char *cpu_model)
     env->cpu_model_str = cpu_model;
     mips_tcg_init();
     cpu_reset(env);
+    qemu_init_vcpu(env);
     return env;
 }
 
index a0d884ee1e6108945a26dff61c721d22f3f712a5..f1663ce3d99d6eb656fdf8cb070bb99fe7ed39c3 100644 (file)
@@ -2831,8 +2831,7 @@ CPUPPCState *cpu_ppc_init (const char *cpu_model)
     cpu_ppc_register_internal(env, def);
     cpu_ppc_reset(env);
 
-    if (kvm_enabled())
-        kvm_init_vcpu(env);
+    qemu_init_vcpu(env);
 
     return env;
 }
index aa3b9d43968dad4c04821ac6d29b91c0523cc976..fc3633a6c3ee428dde18f11a1268fab1f28281e1 100644 (file)
@@ -290,6 +290,7 @@ CPUSH4State *cpu_sh4_init(const char *cpu_model)
     cpu_sh4_reset(env);
     cpu_sh4_register(env, def);
     tlb_flush(env, 1);
+    qemu_init_vcpu(env);
     return env;
 }
 
index b39b16272b4efb70b0826d3b5230a8579790479b..428f97d530ce26ebf411eaa005a2325ad5879a89 100644 (file)
@@ -723,6 +723,7 @@ CPUSPARCState *cpu_sparc_init(const char *cpu_model)
         return NULL;
     }
     cpu_reset(env);
+    qemu_init_vcpu(env);
 
     return env;
 }
diff --git a/vl.c b/vl.c
index a0dcdea96e29f9200703e6d43248c22c5da93b1a..74404647d498f25176bc0d77d6b0fe4018a2f1ed 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -3731,6 +3731,15 @@ static int qemu_init_main_loop(void)
     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)
 {