hw/arm: Add DEFINE_MACHINE_ARM() / DEFINE_MACHINE_AARCH64() macros

A machine defined with the DEFINE_MACHINE_ARM() macro will
be available in both qemu-system-arm and qemu-system-aarch64
binaries.

One defined with DEFINE_MACHINE_AARCH64() will only be
available in the qemu-system-aarch64 binary.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Acked-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20251021205741.57109-4-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2025-04-24 15:34:33 +02:00
parent eb796c5551
commit 453bf5c72f
2 changed files with 46 additions and 0 deletions

View file

@ -9,10 +9,38 @@
#ifndef HW_ARM_MACHINES_QOM_H
#define HW_ARM_MACHINES_QOM_H
#include "hw/boards.h"
#define TYPE_TARGET_ARM_MACHINE \
"target-info-arm-machine"
#define TYPE_TARGET_AARCH64_MACHINE \
"target-info-aarch64-machine"
/*
* A machine filtered with arm_machine_interfaces[] or
* arm_aarch64_machine_interfaces[] will be available
* in both qemu-system-arm and qemu-system-aarch64 binaries.
*
* One filtered with aarch64_machine_interfaces[] will only
* be available in the qemu-system-aarch64 binary.
*/
extern const InterfaceInfo arm_machine_interfaces[];
extern const InterfaceInfo arm_aarch64_machine_interfaces[];
extern const InterfaceInfo aarch64_machine_interfaces[];
/*
* A machine defined with the DEFINE_MACHINE_ARM() macro will be
* available in both qemu-system-arm and qemu-system-aarch64 binaries.
*
* One defined with DEFINE_MACHINE_AARCH64() will only be available in
* the qemu-system-aarch64 binary.
*/
#define DEFINE_MACHINE_ARM(namestr, machine_initfn) \
DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, \
arm_machine_interfaces)
#define DEFINE_MACHINE_AARCH64(namestr, machine_initfn) \
DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, \
aarch64_machine_interfaces)
#endif

View file

@ -9,6 +9,7 @@
#include "migration/qemu-file-types.h"
#include "migration/vmstate.h"
#include "target/arm/gtimer.h"
#include "hw/arm/machines-qom.h"
static bool vfp_needed(void *opaque)
{
@ -1212,3 +1213,20 @@ const VMStateDescription vmstate_arm_cpu = {
NULL
}
};
const InterfaceInfo arm_machine_interfaces[] = {
{ TYPE_TARGET_ARM_MACHINE },
{ TYPE_TARGET_AARCH64_MACHINE },
{ }
};
const InterfaceInfo arm_aarch64_machine_interfaces[] = {
{ TYPE_TARGET_ARM_MACHINE },
{ TYPE_TARGET_AARCH64_MACHINE },
{ }
};
const InterfaceInfo aarch64_machine_interfaces[] = {
{ TYPE_TARGET_AARCH64_MACHINE },
{ }
};