]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
s390x: replace cpu_s390x_init() with cpu_generic_init()
authorIgor Mammedov <imammedo@redhat.com>
Thu, 31 Aug 2017 13:19:38 +0000 (15:19 +0200)
committerEduardo Habkost <ehabkost@redhat.com>
Fri, 1 Sep 2017 14:54:24 +0000 (11:54 -0300)
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>
target/s390x/cpu.c
target/s390x/cpu.h
target/s390x/helper.c

index 7267b60d4109d9470c577291bae302cdb678a2bc..74b3e4fd0d517a4e98b60e7db6e14354165fc141 100644 (file)
@@ -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)
index 4ec338077e17bc62dbddd432a32e9814fda08d2d..0bd97a56709ea0aad2cbf5eaebedc17ef645d627 100644 (file)
@@ -688,8 +688,7 @@ const char *s390_default_cpu_model_name(void);
 
 
 /* helper.c */
-S390CPU *cpu_s390x_init(const char *cpu_model);
-#define cpu_init(model) CPU(cpu_s390x_init(model))
+#define cpu_init(cpu_model) cpu_generic_init(TYPE_S390_CPU, cpu_model)
 S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id, Error **errp);
 /* you can call this signal handler from your SIGBUS and SIGSEGV
    signal handlers to inform the virtual CPU of exceptions. non zero
index 3adb9de1229455b93101ac31190df81b40ed05e9..ba2950447664274d32674c100e518f5df132a90f 100644 (file)
@@ -129,20 +129,6 @@ out:
     return cpu;
 }
 
-S390CPU *cpu_s390x_init(const char *cpu_model)
-{
-    Error *err = NULL;
-    S390CPU *cpu;
-    /* Use to track CPU ID for linux-user only */
-    static int64_t next_cpu_id;
-
-    cpu = s390x_new_cpu(cpu_model, next_cpu_id++, &err);
-    if (err) {
-        error_report_err(err);
-    }
-    return cpu;
-}
-
 #ifndef CONFIG_USER_ONLY
 
 hwaddr s390_cpu_get_phys_page_debug(CPUState *cs, vaddr vaddr)