hw/m68k: convert 'virt' machine definitions to use new macros
This changes the DEFINE_VIRT_MACHINE macro to use the common helpers for constructing versioned symbol names and strings, bringing greater consistency across targets. A DEFINE_VIRT_MACHINE_AS_LATEST helper is added so that it is not required to pass 'false' for every single historical machine type. Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20240620165742.1711389-6-berrange@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
8d40cc1483
commit
1d32d1d136
@ -335,99 +335,106 @@ static void virt_machine_register_types(void)
|
||||
|
||||
type_init(virt_machine_register_types)
|
||||
|
||||
#define DEFINE_VIRT_MACHINE(major, minor, latest) \
|
||||
static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
|
||||
void *data) \
|
||||
#define DEFINE_VIRT_MACHINE_IMPL(latest, ...) \
|
||||
static void MACHINE_VER_SYM(class_init, virt, __VA_ARGS__)( \
|
||||
ObjectClass *oc, \
|
||||
void *data) \
|
||||
{ \
|
||||
MachineClass *mc = MACHINE_CLASS(oc); \
|
||||
virt_machine_##major##_##minor##_options(mc); \
|
||||
mc->desc = "QEMU " # major "." # minor " M68K Virtual Machine"; \
|
||||
MACHINE_VER_SYM(options, virt, __VA_ARGS__)(mc); \
|
||||
mc->desc = "QEMU " MACHINE_VER_STR(__VA_ARGS__) " M68K Virtual Machine"; \
|
||||
if (latest) { \
|
||||
mc->alias = "virt"; \
|
||||
} \
|
||||
} \
|
||||
static const TypeInfo machvirt_##major##_##minor##_info = { \
|
||||
.name = MACHINE_TYPE_NAME("virt-" # major "." # minor), \
|
||||
.parent = MACHINE_TYPE_NAME("virt"), \
|
||||
.class_init = virt_##major##_##minor##_class_init, \
|
||||
}; \
|
||||
static void machvirt_machine_##major##_##minor##_init(void) \
|
||||
static const TypeInfo MACHINE_VER_SYM(info, virt, __VA_ARGS__) = \
|
||||
{ \
|
||||
type_register_static(&machvirt_##major##_##minor##_info); \
|
||||
.name = MACHINE_VER_TYPE_NAME("virt", __VA_ARGS__), \
|
||||
.parent = MACHINE_TYPE_NAME("virt"), \
|
||||
.class_init = MACHINE_VER_SYM(class_init, virt, __VA_ARGS__), \
|
||||
}; \
|
||||
static void MACHINE_VER_SYM(register, virt, __VA_ARGS__)(void) \
|
||||
{ \
|
||||
type_register_static(&MACHINE_VER_SYM(info, virt, __VA_ARGS__)); \
|
||||
} \
|
||||
type_init(machvirt_machine_##major##_##minor##_init);
|
||||
type_init(MACHINE_VER_SYM(register, virt, __VA_ARGS__));
|
||||
|
||||
#define DEFINE_VIRT_MACHINE_AS_LATEST(major, minor) \
|
||||
DEFINE_VIRT_MACHINE_IMPL(true, major, minor)
|
||||
#define DEFINE_VIRT_MACHINE(major, minor) \
|
||||
DEFINE_VIRT_MACHINE_IMPL(false, major, minor)
|
||||
|
||||
static void virt_machine_9_1_options(MachineClass *mc)
|
||||
{
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(9, 1, true)
|
||||
DEFINE_VIRT_MACHINE_AS_LATEST(9, 1)
|
||||
|
||||
static void virt_machine_9_0_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_9_1_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_9_0, hw_compat_9_0_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(9, 0, false)
|
||||
DEFINE_VIRT_MACHINE(9, 0)
|
||||
|
||||
static void virt_machine_8_2_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_9_0_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_8_2, hw_compat_8_2_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(8, 2, false)
|
||||
DEFINE_VIRT_MACHINE(8, 2)
|
||||
|
||||
static void virt_machine_8_1_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_8_2_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_8_1, hw_compat_8_1_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(8, 1, false)
|
||||
DEFINE_VIRT_MACHINE(8, 1)
|
||||
|
||||
static void virt_machine_8_0_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_8_1_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_8_0, hw_compat_8_0_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(8, 0, false)
|
||||
DEFINE_VIRT_MACHINE(8, 0)
|
||||
|
||||
static void virt_machine_7_2_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_8_0_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_7_2, hw_compat_7_2_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 2, false)
|
||||
DEFINE_VIRT_MACHINE(7, 2)
|
||||
|
||||
static void virt_machine_7_1_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_7_2_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 1, false)
|
||||
DEFINE_VIRT_MACHINE(7, 1)
|
||||
|
||||
static void virt_machine_7_0_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_7_1_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_7_0, hw_compat_7_0_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(7, 0, false)
|
||||
DEFINE_VIRT_MACHINE(7, 0)
|
||||
|
||||
static void virt_machine_6_2_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_7_0_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_6_2, hw_compat_6_2_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(6, 2, false)
|
||||
DEFINE_VIRT_MACHINE(6, 2)
|
||||
|
||||
static void virt_machine_6_1_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_6_2_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_6_1, hw_compat_6_1_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(6, 1, false)
|
||||
DEFINE_VIRT_MACHINE(6, 1)
|
||||
|
||||
static void virt_machine_6_0_options(MachineClass *mc)
|
||||
{
|
||||
virt_machine_6_1_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_6_0, hw_compat_6_0_len);
|
||||
}
|
||||
DEFINE_VIRT_MACHINE(6, 0, false)
|
||||
DEFINE_VIRT_MACHINE(6, 0)
|
||||
|
Loading…
Reference in New Issue
Block a user