All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, Igor Mammedov <imammedo@redhat.com>
Subject: [Qemu-devel] [PULL 08/39] m68k: cleanup cpu type name composition
Date: Thu, 26 Oct 2017 16:03:33 +0200	[thread overview]
Message-ID: <20171026140404.21948-9-ehabkost@redhat.com> (raw)
In-Reply-To: <20171026140404.21948-1-ehabkost@redhat.com>

From: Igor Mammedov <imammedo@redhat.com>

use new M68K_CPU_TYPE_NAME to compose CPU type names
and get rid of intermediate M68kCPUInfo/register_cpu_type()
which is replaced by static TypeInfo array.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <1507211474-188400-12-git-send-email-imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target/m68k/cpu.h |  3 +++
 target/m68k/cpu.c | 75 ++++++++++++++++++++-----------------------------------
 2 files changed, 30 insertions(+), 48 deletions(-)

diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h
index d9365476e5..afae5f68ac 100644
--- a/target/m68k/cpu.h
+++ b/target/m68k/cpu.h
@@ -323,6 +323,9 @@ void register_m68k_insns (CPUM68KState *env);
 
 #define cpu_init(cpu_model) cpu_generic_init(TYPE_M68K_CPU, cpu_model)
 
+#define M68K_CPU_TYPE_SUFFIX "-" TYPE_M68K_CPU
+#define M68K_CPU_TYPE_NAME(model) model M68K_CPU_TYPE_SUFFIX
+
 #define cpu_signal_handler cpu_m68k_signal_handler
 #define cpu_list m68k_cpu_list
 
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index 5da19e570b..0a3dd83548 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -87,7 +87,7 @@ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model)
     ObjectClass *oc;
     char *typename;
 
-    typename = g_strdup_printf("%s-" TYPE_M68K_CPU, cpu_model);
+    typename = g_strdup_printf(M68K_CPU_TYPE_NAME("%s"), cpu_model);
     oc = object_class_by_name(typename);
     g_free(typename);
     if (oc != NULL && (object_class_dynamic_cast(oc, TYPE_M68K_CPU) == NULL ||
@@ -202,23 +202,6 @@ static void any_cpu_initfn(Object *obj)
     m68k_set_feature(env, M68K_FEATURE_WORD_INDEX);
 }
 
-typedef struct M68kCPUInfo {
-    const char *name;
-    void (*instance_init)(Object *obj);
-} M68kCPUInfo;
-
-static const M68kCPUInfo m68k_cpus[] = {
-    { .name = "m68000", .instance_init = m68000_cpu_initfn },
-    { .name = "m68020", .instance_init = m68020_cpu_initfn },
-    { .name = "m68030", .instance_init = m68030_cpu_initfn },
-    { .name = "m68040", .instance_init = m68040_cpu_initfn },
-    { .name = "m68060", .instance_init = m68060_cpu_initfn },
-    { .name = "m5206", .instance_init = m5206_cpu_initfn },
-    { .name = "m5208", .instance_init = m5208_cpu_initfn },
-    { .name = "cfv4e", .instance_init = cfv4e_cpu_initfn },
-    { .name = "any",   .instance_init = any_cpu_initfn },
-};
-
 static void m68k_cpu_realizefn(DeviceState *dev, Error **errp)
 {
     CPUState *cs = CPU(dev);
@@ -290,36 +273,32 @@ static void m68k_cpu_class_init(ObjectClass *c, void *data)
     dc->vmsd = &vmstate_m68k_cpu;
 }
 
-static void register_cpu_type(const M68kCPUInfo *info)
-{
-    TypeInfo type_info = {
-        .parent = TYPE_M68K_CPU,
-        .instance_init = info->instance_init,
-    };
-
-    type_info.name = g_strdup_printf("%s-" TYPE_M68K_CPU, info->name);
-    type_register(&type_info);
-    g_free((void *)type_info.name);
-}
+#define DEFINE_M68K_CPU_TYPE(cpu_model, initfn) \
+    {                                           \
+        .name = M68K_CPU_TYPE_NAME(cpu_model),  \
+        .instance_init = initfn,                \
+        .parent = TYPE_M68K_CPU,                \
+    }
 
-static const TypeInfo m68k_cpu_type_info = {
-    .name = TYPE_M68K_CPU,
-    .parent = TYPE_CPU,
-    .instance_size = sizeof(M68kCPU),
-    .instance_init = m68k_cpu_initfn,
-    .abstract = true,
-    .class_size = sizeof(M68kCPUClass),
-    .class_init = m68k_cpu_class_init,
+static const TypeInfo m68k_cpus_type_infos[] = {
+    { /* base class should be registered first */
+        .name = TYPE_M68K_CPU,
+        .parent = TYPE_CPU,
+        .instance_size = sizeof(M68kCPU),
+        .instance_init = m68k_cpu_initfn,
+        .abstract = true,
+        .class_size = sizeof(M68kCPUClass),
+        .class_init = m68k_cpu_class_init,
+    },
+    DEFINE_M68K_CPU_TYPE("m68000", m68000_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m68020", m68020_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m68030", m68030_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m68040", m68040_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m68060", m68060_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m5206", m5206_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("m5208", m5208_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("cfv4e", cfv4e_cpu_initfn),
+    DEFINE_M68K_CPU_TYPE("any", any_cpu_initfn),
 };
 
-static void m68k_cpu_register_types(void)
-{
-    int i;
-
-    type_register_static(&m68k_cpu_type_info);
-    for (i = 0; i < ARRAY_SIZE(m68k_cpus); i++) {
-        register_cpu_type(&m68k_cpus[i]);
-    }
-}
-
-type_init(m68k_cpu_register_types)
+DEFINE_TYPES(m68k_cpus_type_infos)
-- 
2.13.6

  parent reply	other threads:[~2017-10-26 14:04 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-26 14:03 [Qemu-devel] [PULL 00/39] x86/cpu/numa queue, 2017-10-26 Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 01/39] alpha: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 02/39] alpha: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 03/39] cris: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 04/39] cris: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 05/39] lm32: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 06/39] lm32: milkymist: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 07/39] lm32: lm32_boards: " Eduardo Habkost
2017-10-26 14:03 ` Eduardo Habkost [this message]
2017-10-26 14:03 ` [Qemu-devel] [PULL 09/39] m68k: an5206: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 10/39] m68k: mcf5208: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 11/39] moxie: fix qemu-system-moxie failing to start with CLI "-cpu MoxieLite" Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 12/39] moxie: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 13/39] moxie: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 14/39] openrisc: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 15/39] openrisc: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 16/39] sh4: r2d: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 17/39] sh4: shix: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 18/39] sh4: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 19/39] sh4: simplify superh_cpu_class_by_name() Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 20/39] sh4: remove SuperHCPUClass::name field Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 21/39] xtensa: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 22/39] xtensa: sim: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 23/39] xtensa: lx60/lx200/ml605/kc705: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 24/39] unicore32: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 25/39] unicore32: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 26/39] tricore: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 27/39] tricore: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 28/39] sparc: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 29/39] sparc: sun4u/sun4v/niagara: use generic cpu_model parsing Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 30/39] sparc: sparc: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 31/39] sparc: leon3: " Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 32/39] mips: use object_new() instead of gnew()+object_initialize() Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 33/39] mips: malta/boston: replace cpu_model with cpu_type Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 34/39] mips: fulong2e: " Eduardo Habkost
2017-10-26 14:04 ` [Qemu-devel] [PULL 35/39] mips: Magnum/Acer Pica 61: " Eduardo Habkost
2017-10-26 14:04 ` [Qemu-devel] [PULL 36/39] mips: mipssim: " Eduardo Habkost
2017-10-26 14:04 ` [Qemu-devel] [PULL 37/39] mips: r4k: " Eduardo Habkost
2017-10-26 14:04 ` [Qemu-devel] [PULL 38/39] numa: fixup parsed NumaNodeOptions earlier Eduardo Habkost
2017-10-26 14:04 ` [Qemu-devel] [PULL 39/39] x86: Skip check apic_id_limit for Xen Eduardo Habkost
2017-10-27 13:42 ` [Qemu-devel] [PULL 00/39] x86/cpu/numa queue, 2017-10-26 Peter Maydell
2017-10-27 14:10   ` Eduardo Habkost
2017-10-27 18:29     ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171026140404.21948-9-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.