On 5/7/2026 6:47 AM, Philippe Mathieu-Daudé wrote:
> Move IDAU TypeInfo structure to its own source file and
> build it once as common ARM object.
>
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
> ---
> include/hw/arm/armv7m.h | 2 +-
> include/hw/misc/tz-msc.h | 2 +-
> target/arm/{ => tcg}/idau.h | 0
> hw/arm/armv7m.c | 2 +-
> target/arm/cpu.c | 2 +-
> target/arm/ptw.c | 2 +-
> target/arm/tcg/cpu32.c | 8 --------
> target/arm/tcg/idau.c | 20 ++++++++++++++++++++
> target/arm/tcg/meson.build | 1 +
> 9 files changed, 26 insertions(+), 13 deletions(-)
> rename target/arm/{ => tcg}/idau.h (100%)
> create mode 100644 target/arm/tcg/idau.c
>
> diff --git a/include/hw/arm/armv7m.h b/include/hw/arm/armv7m.h
> index 98ad08db036..70555962bb9 100644
> --- a/include/hw/arm/armv7m.h
> +++ b/include/hw/arm/armv7m.h
> @@ -13,7 +13,7 @@
> #include "hw/core/sysbus.h"
> #include "hw/intc/armv7m_nvic.h"
> #include "hw/misc/armv7m_ras.h"
> -#include "target/arm/idau.h"
> +#include "target/arm/tcg/idau.h"
> #include "qom/object.h"
> #include "hw/core/clock.h"
>
> diff --git a/include/hw/misc/tz-msc.h b/include/hw/misc/tz-msc.h
> index 07112d8caa3..6cf4c6b09eb 100644
> --- a/include/hw/misc/tz-msc.h
> +++ b/include/hw/misc/tz-msc.h
> @@ -51,7 +51,7 @@
> #define TZ_MSC_H
>
> #include "hw/core/sysbus.h"
> -#include "target/arm/idau.h"
> +#include "target/arm/tcg/idau.h"
> #include "qom/object.h"
>
> #define TYPE_TZ_MSC "tz-msc"
> diff --git a/target/arm/idau.h b/target/arm/tcg/idau.h
> similarity index 100%
> rename from target/arm/idau.h
> rename to target/arm/tcg/idau.h
> diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> index a29eab6c915..68a1cbd6316 100644
> --- a/hw/arm/armv7m.c
> +++ b/hw/arm/armv7m.c
> @@ -20,7 +20,7 @@
> #include "qemu/error-report.h"
> #include "qemu/module.h"
> #include "qemu/log.h"
> -#include "target/arm/idau.h"
> +#include "target/arm/tcg/idau.h"
> #include "target/arm/cpu.h"
> #include "target/arm/cpu-features.h"
> #include "target/arm/cpu-qom.h"
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index d670ffe4de0..7b29532e6ee 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -24,7 +24,7 @@
> #include "qemu/log.h"
> #include "exec/page-vary.h"
> #include "system/whpx.h"
> -#include "target/arm/idau.h"
> +#include "target/arm/tcg/idau.h"
> #include "qemu/module.h"
> #include "qapi/error.h"
> #include "cpu.h"
> diff --git a/target/arm/ptw.c b/target/arm/ptw.c
> index 316e201cfe0..ff7b7a4d0c8 100644
> --- a/target/arm/ptw.c
> +++ b/target/arm/ptw.c
> @@ -17,7 +17,7 @@
> #include "cpu.h"
> #include "internals.h"
> #include "cpu-features.h"
> -#include "idau.h"
> +#include "target/arm/tcg/idau.h"
>
> typedef struct S1Translate {
>
The idau.h -> tcg/idau.h change is fine.
/*
> diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c
> index 2127d456ad6..73d21c6cf7d 100644
> --- a/target/arm/tcg/cpu32.c
> +++ b/target/arm/tcg/cpu32.c
> @@ -12,7 +12,6 @@
> #include "cpu.h"
> #include "accel/tcg/cpu-ops.h"
> #include "internals.h"
> -#include "target/arm/idau.h"
> #if !defined(CONFIG_USER_ONLY)
> #include "hw/core/boards.h"
> #endif
> @@ -899,17 +898,10 @@ static const ARMCPUInfo arm_tcg_cpus[] = {
> #endif
> };
>
> -static const TypeInfo idau_interface_type_info = {
> - .name = TYPE_IDAU_INTERFACE,
> - .parent = TYPE_INTERFACE,
> - .class_size = sizeof(IDAUInterfaceClass),
> -};
> -
> static void arm_tcg_cpu_register_types(void)
> {
> size_t i;
>
> - type_register_static(&idau_interface_type_info);
> for (i = 0; i < ARRAY_SIZE(arm_tcg_cpus); ++i) {
> arm_cpu_register(&arm_tcg_cpus[i]);
> }
> diff --git a/target/arm/tcg/idau.c b/target/arm/tcg/idau.c
> new file mode 100644
> index 00000000000..57e5c658e9d
> --- /dev/null
> +++ b/target/arm/tcg/idau.c
> @@ -0,0 +1,20 @@
> +/*
> + * QEMU ARM CPU -- interface for the Arm v8M IDAU
> + *
> + * Copyright (c) 2018 Linaro Ltd
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#include "qemu/osdep.h"
> +#include "target/arm/tcg/idau.h"
> +
> +static const TypeInfo idau_types[] = {
> + {
> + .name = TYPE_IDAU_INTERFACE,
> + .parent = TYPE_INTERFACE,
> + .class_size = sizeof(IDAUInterfaceClass),
> + }
> +};
> +
> +DEFINE_TYPES(idau_types)
> diff --git a/target/arm/tcg/meson.build b/target/arm/tcg/meson.build
> index d2364aa39c4..fa1e3d6640c 100644
> --- a/target/arm/tcg/meson.build
> +++ b/target/arm/tcg/meson.build
> @@ -56,6 +56,7 @@ arm_common_ss.add(zlib)
> arm_common_ss.add(files(
> 'arith_helper.c',
> 'crypto_helper.c',
> + 'idau.c',
> ))
>
> arm_common_system_ss.add(
Why not, but what does it solves?
The common aspect is not so important since tcg/cpu32.c will be common
pretty soon.
Not blocking though, I'm just curious of the reason to extract this:
Reviewed-by: Pierrick Bouvier <[email protected]>
Regards,
Pierrick