diff options
author | Igor Mammedov <imammedo@redhat.com> | 2017-08-31 15:19:38 +0200 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2017-09-01 11:54:24 -0300 |
commit | 6ad76dfd137b4d43c88f88a3cd27312f066c63ac (patch) | |
tree | 4c69e2f8e5a7b54f6c7ccdbccfcdc23449e2f1a3 /target/s390x/cpu.c | |
parent | 3d592ffbabec5120d501d534478c2c95dff29aa7 (diff) |
s390x: replace cpu_s390x_init() with cpu_generic_init()
cpu_s390x_init() is used only *-user targets indirectly
via cpu_init() macro and has a hack to assign ids to created
cpus (I'm not sure if 'id' really matters to *-user emulation).
So to on safe side, instead of having custom wrapper to do numbering
replace it with cpu_generic_init() and use S390CPUClass::next_cpu_id
which could serve the same purpose as static variable and move cpu->id
initialization to s390_cpu_initfn for CONFIG_USER_ONLY use-case.
PS:
ifdef is ugly but it allows us to hide s390x detail that isn't
set by *-user targets and reuse generic cpu creation utility
for btoh machine and user emulation.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1504185578-80843-1-git-send-email-imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target/s390x/cpu.c')
-rw-r--r-- | target/s390x/cpu.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 7267b60d41..74b3e4fd0d 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -306,6 +306,13 @@ static void s390_cpu_initfn(Object *obj) inited = true; s390x_translate_init(); } + +#if defined(CONFIG_USER_ONLY) + { + S390CPUClass *scc = S390_CPU_GET_CLASS(obj); + cpu->id = scc->next_cpu_id; + } +#endif } static void s390_cpu_finalize(Object *obj) |