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 01/39] alpha: cleanup cpu type name composition
Date: Thu, 26 Oct 2017 16:03:26 +0200 [thread overview]
Message-ID: <20171026140404.21948-2-ehabkost@redhat.com> (raw)
In-Reply-To: <20171026140404.21948-1-ehabkost@redhat.com>
From: Igor Mammedov <imammedo@redhat.com>
Introduce ALPHA_CPU_TYPE_NAME macro to replace rather ununique
TYPE macro that alpha uses. With new macro it will follow
the same naming convention as other targets.
While at it put scattered TypeInfo into one array which places
type desriptions at one place and reduces code a bit.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <1507211474-188400-5-git-send-email-imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
target/alpha/cpu.h | 3 ++
target/alpha/cpu.c | 107 +++++++++++++++++------------------------------------
2 files changed, 37 insertions(+), 73 deletions(-)
diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h
index 6ae240969b..0a9ad35f06 100644
--- a/target/alpha/cpu.h
+++ b/target/alpha/cpu.h
@@ -470,6 +470,9 @@ void alpha_translate_init(void);
#define cpu_init(cpu_model) cpu_generic_init(TYPE_ALPHA_CPU, cpu_model)
+#define ALPHA_CPU_TYPE_SUFFIX "-" TYPE_ALPHA_CPU
+#define ALPHA_CPU_TYPE_NAME(model) model ALPHA_CPU_TYPE_SUFFIX
+
void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf);
/* you can call this signal handler from your SIGBUS and SIGSEGV
signal handlers to inform the virtual CPU of exceptions. non zero
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
index bc9520535b..7d6366bae9 100644
--- a/target/alpha/cpu.c
+++ b/target/alpha/cpu.c
@@ -108,21 +108,18 @@ void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf)
}
/* Models */
-
-#define TYPE(model) model "-" TYPE_ALPHA_CPU
-
typedef struct AlphaCPUAlias {
const char *alias;
const char *typename;
} AlphaCPUAlias;
static const AlphaCPUAlias alpha_cpu_aliases[] = {
- { "21064", TYPE("ev4") },
- { "21164", TYPE("ev5") },
- { "21164a", TYPE("ev56") },
- { "21164pc", TYPE("pca56") },
- { "21264", TYPE("ev6") },
- { "21264a", TYPE("ev67") },
+ { "21064", ALPHA_CPU_TYPE_NAME("ev4") },
+ { "21164", ALPHA_CPU_TYPE_NAME("ev5") },
+ { "21164a", ALPHA_CPU_TYPE_NAME("ev56") },
+ { "21164pc", ALPHA_CPU_TYPE_NAME("pca56") },
+ { "21264", ALPHA_CPU_TYPE_NAME("ev6") },
+ { "21264a", ALPHA_CPU_TYPE_NAME("ev67") },
};
static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model)
@@ -145,7 +142,7 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model)
}
}
- typename = g_strdup_printf("%s-" TYPE_ALPHA_CPU, cpu_model);
+ typename = g_strdup_printf(ALPHA_CPU_TYPE_NAME("%s"), cpu_model);
oc = object_class_by_name(typename);
g_free(typename);
if (oc != NULL && object_class_is_abstract(oc)) {
@@ -155,7 +152,7 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model)
/* TODO: remove match everything nonsense */
/* Default to ev67; no reason not to emulate insns by default. */
if (!oc) {
- oc = object_class_by_name(TYPE("ev67"));
+ oc = object_class_by_name(ALPHA_CPU_TYPE_NAME("ev67"));
}
return oc;
@@ -169,12 +166,6 @@ static void ev4_cpu_initfn(Object *obj)
env->implver = IMPLVER_2106x;
}
-static const TypeInfo ev4_cpu_type_info = {
- .name = TYPE("ev4"),
- .parent = TYPE_ALPHA_CPU,
- .instance_init = ev4_cpu_initfn,
-};
-
static void ev5_cpu_initfn(Object *obj)
{
AlphaCPU *cpu = ALPHA_CPU(obj);
@@ -183,12 +174,6 @@ static void ev5_cpu_initfn(Object *obj)
env->implver = IMPLVER_21164;
}
-static const TypeInfo ev5_cpu_type_info = {
- .name = TYPE("ev5"),
- .parent = TYPE_ALPHA_CPU,
- .instance_init = ev5_cpu_initfn,
-};
-
static void ev56_cpu_initfn(Object *obj)
{
AlphaCPU *cpu = ALPHA_CPU(obj);
@@ -197,12 +182,6 @@ static void ev56_cpu_initfn(Object *obj)
env->amask |= AMASK_BWX;
}
-static const TypeInfo ev56_cpu_type_info = {
- .name = TYPE("ev56"),
- .parent = TYPE("ev5"),
- .instance_init = ev56_cpu_initfn,
-};
-
static void pca56_cpu_initfn(Object *obj)
{
AlphaCPU *cpu = ALPHA_CPU(obj);
@@ -211,12 +190,6 @@ static void pca56_cpu_initfn(Object *obj)
env->amask |= AMASK_MVI;
}
-static const TypeInfo pca56_cpu_type_info = {
- .name = TYPE("pca56"),
- .parent = TYPE("ev56"),
- .instance_init = pca56_cpu_initfn,
-};
-
static void ev6_cpu_initfn(Object *obj)
{
AlphaCPU *cpu = ALPHA_CPU(obj);
@@ -226,12 +199,6 @@ static void ev6_cpu_initfn(Object *obj)
env->amask = AMASK_BWX | AMASK_FIX | AMASK_MVI | AMASK_TRAP;
}
-static const TypeInfo ev6_cpu_type_info = {
- .name = TYPE("ev6"),
- .parent = TYPE_ALPHA_CPU,
- .instance_init = ev6_cpu_initfn,
-};
-
static void ev67_cpu_initfn(Object *obj)
{
AlphaCPU *cpu = ALPHA_CPU(obj);
@@ -240,17 +207,6 @@ static void ev67_cpu_initfn(Object *obj)
env->amask |= AMASK_CIX | AMASK_PREFETCH;
}
-static const TypeInfo ev67_cpu_type_info = {
- .name = TYPE("ev67"),
- .parent = TYPE("ev6"),
- .instance_init = ev67_cpu_initfn,
-};
-
-static const TypeInfo ev68_cpu_type_info = {
- .name = TYPE("ev68"),
- .parent = TYPE("ev67"),
-};
-
static void alpha_cpu_initfn(Object *obj)
{
CPUState *cs = CPU(obj);
@@ -302,26 +258,31 @@ static void alpha_cpu_class_init(ObjectClass *oc, void *data)
cc->gdb_num_core_regs = 67;
}
-static const TypeInfo alpha_cpu_type_info = {
- .name = TYPE_ALPHA_CPU,
- .parent = TYPE_CPU,
- .instance_size = sizeof(AlphaCPU),
- .instance_init = alpha_cpu_initfn,
- .abstract = true,
- .class_size = sizeof(AlphaCPUClass),
- .class_init = alpha_cpu_class_init,
+#define DEFINE_ALPHA_CPU_TYPE(base_type, cpu_model, initfn) \
+ { \
+ .parent = base_type, \
+ .instance_init = initfn, \
+ .name = ALPHA_CPU_TYPE_NAME(cpu_model), \
+ }
+
+static const TypeInfo alpha_cpu_type_infos[] = {
+ {
+ .name = TYPE_ALPHA_CPU,
+ .parent = TYPE_CPU,
+ .instance_size = sizeof(AlphaCPU),
+ .instance_init = alpha_cpu_initfn,
+ .abstract = true,
+ .class_size = sizeof(AlphaCPUClass),
+ .class_init = alpha_cpu_class_init,
+ },
+ DEFINE_ALPHA_CPU_TYPE(TYPE_ALPHA_CPU, "ev4", ev4_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(TYPE_ALPHA_CPU, "ev5", ev5_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(ALPHA_CPU_TYPE_NAME("ev5"), "ev56", ev56_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(ALPHA_CPU_TYPE_NAME("ev56"), "pca56",
+ pca56_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(TYPE_ALPHA_CPU, "ev6", ev6_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(ALPHA_CPU_TYPE_NAME("ev6"), "ev67", ev67_cpu_initfn),
+ DEFINE_ALPHA_CPU_TYPE(ALPHA_CPU_TYPE_NAME("ev67"), "ev68", NULL),
};
-static void alpha_cpu_register_types(void)
-{
- type_register_static(&alpha_cpu_type_info);
- type_register_static(&ev4_cpu_type_info);
- type_register_static(&ev5_cpu_type_info);
- type_register_static(&ev56_cpu_type_info);
- type_register_static(&pca56_cpu_type_info);
- type_register_static(&ev6_cpu_type_info);
- type_register_static(&ev67_cpu_type_info);
- type_register_static(&ev68_cpu_type_info);
-}
-
-type_init(alpha_cpu_register_types)
+DEFINE_TYPES(alpha_cpu_type_infos)
--
2.13.6
next prev 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 ` Eduardo Habkost [this message]
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 ` [Qemu-devel] [PULL 08/39] m68k: cleanup cpu type name composition Eduardo Habkost
2017-10-26 14:03 ` [Qemu-devel] [PULL 09/39] m68k: an5206: use generic cpu_model parsing 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-2-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).