On Tue, 4 Feb 2025 at 00:23, Philippe Mathieu-Daudé <phi...@linaro.org> wrote:
>
> Merge Raspi4bMachineState within RaspiMachineState by
> using an unnamed union.
>
> Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
> ---
>  hw/arm/raspi.c | 21 +++++++--------------
>  1 file changed, 7 insertions(+), 14 deletions(-)
>
> diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c
> index 3fa382d62ce..ef94d57dab5 100644
> --- a/hw/arm/raspi.c
> +++ b/hw/arm/raspi.c
> @@ -38,9 +38,6 @@
>  #define TYPE_RASPI_MACHINE  MACHINE_TYPE_NAME("raspi-common")
>  OBJECT_DECLARE_SIMPLE_TYPE(RaspiMachineState, RASPI_MACHINE)
>
> -#define TYPE_RASPI4B_MACHINE MACHINE_TYPE_NAME("raspi4b")
> -OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, RASPI4B_MACHINE)
> -
>  #define SMPBOOT_ADDR    0x300 /* this should leave enough space for ATAGS */
>  #define MVBAR_ADDR      0x400 /* secure vectors */
>  #define BOARDSETUP_ADDR (MVBAR_ADDR + 0x20) /* board setup code */
> @@ -49,15 +46,12 @@ OBJECT_DECLARE_SIMPLE_TYPE(Raspi4bMachineState, 
> RASPI4B_MACHINE)
>  #define SPINTABLE_ADDR  0xd8 /* Pi 3 bootloader spintable */
>
>  struct RaspiMachineState {
> -    /*< private >*/
>      RaspiBaseMachineState parent_obj;
> -    /*< public >*/
> -    BCM283XState soc;
> -};
>
> -struct Raspi4bMachineState {
> -    RaspiBaseMachineState parent_obj;
> -    BCM2838State soc;
> +    union {
> +        BCM283XState soc;
> +        BCM2838State soc4;
> +    };

Do we have any other examples of using a union like this?
I think it's exactly because the components are different
for raspi4b that it has its own machine state struct.

thanks
-- PMM

Reply via email to