Message ID | 20250422145502.70770-15-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | single-binary: Make hw/arm/ common | expand |
On 4/22/25 07:54, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé<philmd@linaro.org> > --- > include/qemu/target-info-impl.h | 4 ++++ > configs/targets/aarch64-softmmu.c | 1 + > configs/targets/arm-softmmu.c | 1 + > target-info-stub.c | 1 + > 4 files changed, 7 insertions(+) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 4/22/25 07:54, Philippe Mathieu-Daudé wrote: > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > include/qemu/target-info-impl.h | 4 ++++ > configs/targets/aarch64-softmmu.c | 1 + > configs/targets/arm-softmmu.c | 1 + > target-info-stub.c | 1 + > 4 files changed, 7 insertions(+) > > diff --git a/include/qemu/target-info-impl.h b/include/qemu/target-info-impl.h > index 4ef54c5136a..e5cd169b49a 100644 > --- a/include/qemu/target-info-impl.h > +++ b/include/qemu/target-info-impl.h > @@ -10,12 +10,16 @@ > #define QEMU_TARGET_INFO_IMPL_H > > #include "qemu/target-info.h" > +#include "qapi/qapi-types-machine.h" > > typedef struct TargetInfo { > > /* runtime equivalent of TARGET_NAME definition */ > const char *const target_name; > > + /* related to TARGET_ARCH definition */ > + SysEmuTarget target_arch; > + > /* QOM typename machines for this binary must implement */ > const char *const machine_typename; > > diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/aarch64-softmmu.c > index 375e6fa0b7b..ff89401ea34 100644 > --- a/configs/targets/aarch64-softmmu.c > +++ b/configs/targets/aarch64-softmmu.c > @@ -13,6 +13,7 @@ > > static const TargetInfo target_info_aarch64_system = { > .target_name = "aarch64", > + .target_arch = SYS_EMU_TARGET_AARCH64, > .machine_typename = TYPE_TARGET_AARCH64_MACHINE, > }; > > diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm-softmmu.c > index d4acdae64f3..22ec9e4faa3 100644 > --- a/configs/targets/arm-softmmu.c > +++ b/configs/targets/arm-softmmu.c > @@ -13,6 +13,7 @@ > > static const TargetInfo target_info_arm_system = { > .target_name = "arm", > + .target_arch = SYS_EMU_TARGET_ARM, > .machine_typename = TYPE_TARGET_ARM_MACHINE, > }; > > diff --git a/target-info-stub.c b/target-info-stub.c > index 218e5898e7f..e573f5c1975 100644 > --- a/target-info-stub.c > +++ b/target-info-stub.c > @@ -12,6 +12,7 @@ > > static const TargetInfo target_info_stub = { > .target_name = TARGET_NAME, > + .target_arch = -1, I think we should have a full ifdef ladder here, to handle all architectures. Setting -1 is not a safe default. > .machine_typename = TYPE_MACHINE, > }; >
On 22/4/25 20:20, Pierrick Bouvier wrote: > On 4/22/25 07:54, Philippe Mathieu-Daudé wrote: >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> include/qemu/target-info-impl.h | 4 ++++ >> configs/targets/aarch64-softmmu.c | 1 + >> configs/targets/arm-softmmu.c | 1 + >> target-info-stub.c | 1 + >> 4 files changed, 7 insertions(+) >> >> diff --git a/include/qemu/target-info-impl.h b/include/qemu/target- >> info-impl.h >> index 4ef54c5136a..e5cd169b49a 100644 >> --- a/include/qemu/target-info-impl.h >> +++ b/include/qemu/target-info-impl.h >> @@ -10,12 +10,16 @@ >> #define QEMU_TARGET_INFO_IMPL_H >> #include "qemu/target-info.h" >> +#include "qapi/qapi-types-machine.h" >> typedef struct TargetInfo { >> /* runtime equivalent of TARGET_NAME definition */ >> const char *const target_name; >> + /* related to TARGET_ARCH definition */ >> + SysEmuTarget target_arch; >> + >> /* QOM typename machines for this binary must implement */ >> const char *const machine_typename; >> diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/ >> aarch64-softmmu.c >> index 375e6fa0b7b..ff89401ea34 100644 >> --- a/configs/targets/aarch64-softmmu.c >> +++ b/configs/targets/aarch64-softmmu.c >> @@ -13,6 +13,7 @@ >> static const TargetInfo target_info_aarch64_system = { >> .target_name = "aarch64", >> + .target_arch = SYS_EMU_TARGET_AARCH64, >> .machine_typename = TYPE_TARGET_AARCH64_MACHINE, >> }; >> diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm- >> softmmu.c >> index d4acdae64f3..22ec9e4faa3 100644 >> --- a/configs/targets/arm-softmmu.c >> +++ b/configs/targets/arm-softmmu.c >> @@ -13,6 +13,7 @@ >> static const TargetInfo target_info_arm_system = { >> .target_name = "arm", >> + .target_arch = SYS_EMU_TARGET_ARM, >> .machine_typename = TYPE_TARGET_ARM_MACHINE, >> }; >> diff --git a/target-info-stub.c b/target-info-stub.c >> index 218e5898e7f..e573f5c1975 100644 >> --- a/target-info-stub.c >> +++ b/target-info-stub.c >> @@ -12,6 +12,7 @@ >> static const TargetInfo target_info_stub = { >> .target_name = TARGET_NAME, >> + .target_arch = -1, > > I think we should have a full ifdef ladder here, to handle all > architectures. Setting -1 is not a safe default. TargetInfo definition is internal to "qemu/target-info-impl.h", otherwise its type is forward-declared as opaque. > >> .machine_typename = TYPE_MACHINE, >> }; >
On 4/22/25 11:24, Philippe Mathieu-Daudé wrote: > On 22/4/25 20:20, Pierrick Bouvier wrote: >> On 4/22/25 07:54, Philippe Mathieu-Daudé wrote: >>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >>> --- >>> include/qemu/target-info-impl.h | 4 ++++ >>> configs/targets/aarch64-softmmu.c | 1 + >>> configs/targets/arm-softmmu.c | 1 + >>> target-info-stub.c | 1 + >>> 4 files changed, 7 insertions(+) >>> >>> diff --git a/include/qemu/target-info-impl.h b/include/qemu/target- >>> info-impl.h >>> index 4ef54c5136a..e5cd169b49a 100644 >>> --- a/include/qemu/target-info-impl.h >>> +++ b/include/qemu/target-info-impl.h >>> @@ -10,12 +10,16 @@ >>> #define QEMU_TARGET_INFO_IMPL_H >>> #include "qemu/target-info.h" >>> +#include "qapi/qapi-types-machine.h" >>> typedef struct TargetInfo { >>> /* runtime equivalent of TARGET_NAME definition */ >>> const char *const target_name; >>> + /* related to TARGET_ARCH definition */ >>> + SysEmuTarget target_arch; >>> + >>> /* QOM typename machines for this binary must implement */ >>> const char *const machine_typename; >>> diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/ >>> aarch64-softmmu.c >>> index 375e6fa0b7b..ff89401ea34 100644 >>> --- a/configs/targets/aarch64-softmmu.c >>> +++ b/configs/targets/aarch64-softmmu.c >>> @@ -13,6 +13,7 @@ >>> static const TargetInfo target_info_aarch64_system = { >>> .target_name = "aarch64", >>> + .target_arch = SYS_EMU_TARGET_AARCH64, >>> .machine_typename = TYPE_TARGET_AARCH64_MACHINE, >>> }; >>> diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm- >>> softmmu.c >>> index d4acdae64f3..22ec9e4faa3 100644 >>> --- a/configs/targets/arm-softmmu.c >>> +++ b/configs/targets/arm-softmmu.c >>> @@ -13,6 +13,7 @@ >>> static const TargetInfo target_info_arm_system = { >>> .target_name = "arm", >>> + .target_arch = SYS_EMU_TARGET_ARM, >>> .machine_typename = TYPE_TARGET_ARM_MACHINE, >>> }; >>> diff --git a/target-info-stub.c b/target-info-stub.c >>> index 218e5898e7f..e573f5c1975 100644 >>> --- a/target-info-stub.c >>> +++ b/target-info-stub.c >>> @@ -12,6 +12,7 @@ >>> static const TargetInfo target_info_stub = { >>> .target_name = TARGET_NAME, >>> + .target_arch = -1, >> >> I think we should have a full ifdef ladder here, to handle all >> architectures. Setting -1 is not a safe default. > > TargetInfo definition is internal to "qemu/target-info-impl.h", > otherwise its type is forward-declared as opaque. > Fine, but we need to be able to access to target_arch(), which returns the enum value, without having to deal with -1 situation, which is not a proper enum value. switch (target_arch()) { case SYS_EMU_TARGET_ARM: case SYS_EMU_TARGET_AARCH64: ... default: break; } >> >>> .machine_typename = TYPE_MACHINE, >>> }; >> >
diff --git a/include/qemu/target-info-impl.h b/include/qemu/target-info-impl.h index 4ef54c5136a..e5cd169b49a 100644 --- a/include/qemu/target-info-impl.h +++ b/include/qemu/target-info-impl.h @@ -10,12 +10,16 @@ #define QEMU_TARGET_INFO_IMPL_H #include "qemu/target-info.h" +#include "qapi/qapi-types-machine.h" typedef struct TargetInfo { /* runtime equivalent of TARGET_NAME definition */ const char *const target_name; + /* related to TARGET_ARCH definition */ + SysEmuTarget target_arch; + /* QOM typename machines for this binary must implement */ const char *const machine_typename; diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/aarch64-softmmu.c index 375e6fa0b7b..ff89401ea34 100644 --- a/configs/targets/aarch64-softmmu.c +++ b/configs/targets/aarch64-softmmu.c @@ -13,6 +13,7 @@ static const TargetInfo target_info_aarch64_system = { .target_name = "aarch64", + .target_arch = SYS_EMU_TARGET_AARCH64, .machine_typename = TYPE_TARGET_AARCH64_MACHINE, }; diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm-softmmu.c index d4acdae64f3..22ec9e4faa3 100644 --- a/configs/targets/arm-softmmu.c +++ b/configs/targets/arm-softmmu.c @@ -13,6 +13,7 @@ static const TargetInfo target_info_arm_system = { .target_name = "arm", + .target_arch = SYS_EMU_TARGET_ARM, .machine_typename = TYPE_TARGET_ARM_MACHINE, }; diff --git a/target-info-stub.c b/target-info-stub.c index 218e5898e7f..e573f5c1975 100644 --- a/target-info-stub.c +++ b/target-info-stub.c @@ -12,6 +12,7 @@ static const TargetInfo target_info_stub = { .target_name = TARGET_NAME, + .target_arch = -1, .machine_typename = TYPE_MACHINE, };
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/qemu/target-info-impl.h | 4 ++++ configs/targets/aarch64-softmmu.c | 1 + configs/targets/arm-softmmu.c | 1 + target-info-stub.c | 1 + 4 files changed, 7 insertions(+)