aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2013-01-19 22:43:32 +0100
committerAndreas Färber <afaerber@suse.de>2013-02-16 14:50:58 +0100
commit2b7ac76729c8253d799a8d3bb9bae76cccb0714e (patch)
treea7fb32f0f295e94ac2e08746a6727733761bc61c
parent60925d2644953ce1ca7813411853d8c04e637050 (diff)
target-s390x: Move TCG initialization to S390CPU initfn
Ensures that a QOM-created S390CPU is usable. Acked-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r--target-s390x/cpu.c6
-rw-r--r--target-s390x/helper.c7
2 files changed, 6 insertions, 7 deletions
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
index ee15783b94..787c937579 100644
--- a/target-s390x/cpu.c
+++ b/target-s390x/cpu.c
@@ -112,6 +112,7 @@ static void s390_cpu_initfn(Object *obj)
{
S390CPU *cpu = S390_CPU(obj);
CPUS390XState *env = &cpu->env;
+ static bool inited;
static int cpu_num = 0;
#if !defined(CONFIG_USER_ONLY)
struct tm tm;
@@ -133,6 +134,11 @@ static void s390_cpu_initfn(Object *obj)
#endif
env->cpu_num = cpu_num++;
env->ext_index = -1;
+
+ if (tcg_enabled() && !inited) {
+ inited = true;
+ s390x_translate_init();
+ }
}
static void s390_cpu_finalize(Object *obj)
diff --git a/target-s390x/helper.c b/target-s390x/helper.c
index d3bb4561f1..1183b45ca1 100644
--- a/target-s390x/helper.c
+++ b/target-s390x/helper.c
@@ -74,16 +74,9 @@ S390CPU *cpu_s390x_init(const char *cpu_model)
{
S390CPU *cpu;
CPUS390XState *env;
- static int inited;
cpu = S390_CPU(object_new(TYPE_S390_CPU));
env = &cpu->env;
-
- if (tcg_enabled() && !inited) {
- inited = 1;
- s390x_translate_init();
- }
-
env->cpu_model_str = cpu_model;
object_property_set_bool(OBJECT(cpu), true, "realized", NULL);