On Wed, Jan 7, 2026 at 12:26 PM Philippe Mathieu-Daudé
<[email protected]> wrote:
>
> In order to remove the TARGET_BIG_ENDIAN use in "cpu.h",
> introduce the xtensa_default_cpu_model() helper which
> returns the current XTENSA_DEFAULT_CPU_MODEL but evaluating
> endianness at runtime. Update the machines using it.
>
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
> ---
>  target/xtensa/cpu-qom.h     |  2 ++
>  target/xtensa/cpu.h         |  4 ----
>  hw/xtensa/sim.c             | 10 ++++++++--
>  hw/xtensa/virt.c            | 11 +++++++++--
>  hw/xtensa/xtfpga.c          | 17 +++++++++--------
>  linux-user/xtensa/elfload.c |  4 ++--
>  target/xtensa/cpu.c         |  5 +++++
>  7 files changed, 35 insertions(+), 18 deletions(-)
>
> diff --git a/target/xtensa/cpu-qom.h b/target/xtensa/cpu-qom.h
> index d932346b5fe..66992d08c2e 100644
> --- a/target/xtensa/cpu-qom.h
> +++ b/target/xtensa/cpu-qom.h
> @@ -38,4 +38,6 @@ OBJECT_DECLARE_CPU_TYPE(XtensaCPU, XtensaCPUClass, 
> XTENSA_CPU)
>  #define XTENSA_CPU_TYPE_SUFFIX "-" TYPE_XTENSA_CPU
>  #define XTENSA_CPU_TYPE_NAME(model) model XTENSA_CPU_TYPE_SUFFIX
>
> +const char *xtensa_default_cpu_model(void);
> +
>  #endif
> diff --git a/target/xtensa/cpu.h b/target/xtensa/cpu.h
> index 22192924841..fe2f25e527c 100644
> --- a/target/xtensa/cpu.h
> +++ b/target/xtensa/cpu.h
> @@ -606,14 +606,10 @@ G_NORETURN void xtensa_cpu_do_unaligned_access(CPUState 
> *cpu, vaddr addr,
>  #define CPU_RESOLVING_TYPE TYPE_XTENSA_CPU
>
>  #if TARGET_BIG_ENDIAN
> -#define XTENSA_DEFAULT_CPU_MODEL "fsf"
>  #define XTENSA_DEFAULT_CPU_NOMMU_MODEL "fsf"
>  #else
> -#define XTENSA_DEFAULT_CPU_MODEL "dc232b"
>  #define XTENSA_DEFAULT_CPU_NOMMU_MODEL "de212"
>  #endif
> -#define XTENSA_DEFAULT_CPU_TYPE \
> -    XTENSA_CPU_TYPE_NAME(XTENSA_DEFAULT_CPU_MODEL)
>  #define XTENSA_DEFAULT_CPU_NOMMU_TYPE \
>      XTENSA_CPU_TYPE_NAME(XTENSA_DEFAULT_CPU_NOMMU_MODEL)
>
> diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c
> index 994460d0414..03dbe69c2d4 100644
> --- a/hw/xtensa/sim.c
> +++ b/hw/xtensa/sim.c
> @@ -36,6 +36,7 @@
>  #include "qemu/error-report.h"
>  #include "xtensa_memory.h"
>  #include "xtensa_sim.h"
> +#include "target/xtensa/cpu-qom.h"
>
>  static uint64_t translate_phys_addr(void *opaque, uint64_t addr)
>  {
> @@ -119,12 +120,17 @@ static void xtensa_sim_init(MachineState *machine)
>
>  static void xtensa_sim_machine_init(MachineClass *mc)
>  {
> -    mc->desc = "sim machine (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    if (target_big_endian()) {
> +        mc->default_cpu_type = XTENSA_CPU_TYPE_NAME("fsf");
> +        mc->desc = "sim machine (fsf)";
> +    } else {
> +        mc->default_cpu_type = XTENSA_CPU_TYPE_NAME("dc232b");
> +        mc->desc = "sim machine (dc232b)";
> +    }
>      mc->is_default = true;
>      mc->init = xtensa_sim_init;
>      mc->max_cpus = 4;
>      mc->no_serial = 1;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
>  }
>
>  DEFINE_MACHINE("sim", xtensa_sim_machine_init)
> diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c
> index 271f06e0953..2275953ce67 100644
> --- a/hw/xtensa/virt.c
> +++ b/hw/xtensa/virt.c
> @@ -35,8 +35,10 @@
>  #include "elf.h"
>  #include "system/memory.h"
>  #include "qemu/error-report.h"
> +#include "qemu/target-info.h"
>  #include "xtensa_memory.h"
>  #include "xtensa_sim.h"
> +#include "target/xtensa/cpu-qom.h"
>
>  static void create_pcie(MachineState *ms, CPUXtensaState *env, int irq_base,
>                          hwaddr addr_base)
> @@ -117,10 +119,15 @@ static void xtensa_virt_init(MachineState *machine)
>
>  static void xtensa_virt_machine_init(MachineClass *mc)
>  {
> -    mc->desc = "virt machine (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    if (target_big_endian()) {
> +        mc->default_cpu_type = XTENSA_CPU_TYPE_NAME("fsf");
> +        mc->desc = "virt machine (fsf)";
> +    } else {
> +        mc->default_cpu_type = XTENSA_CPU_TYPE_NAME("dc232b");
> +        mc->desc = "virt machine (dc232b)";
> +    }
>      mc->init = xtensa_virt_init;
>      mc->max_cpus = 32;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
>      mc->default_nic = "virtio-net-pci";
>  }
>
> diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
> index d427d68e505..5fd4d655557 100644
> --- a/hw/xtensa/xtfpga.c
> +++ b/hw/xtensa/xtfpga.c
> @@ -51,6 +51,7 @@
>  #include "hw/xtensa/mx_pic.h"
>  #include "exec/cpu-common.h"
>  #include "migration/vmstate.h"
> +#include "target/xtensa/cpu-qom.h"
>
>  typedef struct XtfpgaFlashDesc {
>      hwaddr base;
> @@ -591,10 +592,10 @@ static void xtfpga_lx60_class_init(ObjectClass *oc, 
> const void *data)
>  {
>      MachineClass *mc = MACHINE_CLASS(oc);
>
> -    mc->desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    mc->desc = g_strdup_printf("lx60 EVB (%s)", xtensa_default_cpu_model());
>      mc->init = xtfpga_lx60_init;
>      mc->max_cpus = 32;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
> +    mc->default_cpu_type = xtensa_default_cpu_model();

Type was expected here, but model is supplied instead.
I wonder why xtfpga and sim/virt are done differently?

>      mc->default_ram_size = 64 * MiB;
>  }
>
> @@ -625,10 +626,10 @@ static void xtfpga_lx200_class_init(ObjectClass *oc, 
> const void *data)
>  {
>      MachineClass *mc = MACHINE_CLASS(oc);
>
> -    mc->desc = "lx200 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    mc->desc = g_strdup_printf("lx200 EVB (%s)", xtensa_default_cpu_model());
>      mc->init = xtfpga_lx200_init;
>      mc->max_cpus = 32;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
> +    mc->default_cpu_type = xtensa_default_cpu_model();

Same here.

>      mc->default_ram_size = 96 * MiB;
>  }
>
> @@ -659,10 +660,10 @@ static void xtfpga_ml605_class_init(ObjectClass *oc, 
> const void *data)
>  {
>      MachineClass *mc = MACHINE_CLASS(oc);
>
> -    mc->desc = "ml605 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    mc->desc = g_strdup_printf("ml605 EVB (%s)", xtensa_default_cpu_model());
>      mc->init = xtfpga_ml605_init;
>      mc->max_cpus = 32;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
> +    mc->default_cpu_type = xtensa_default_cpu_model();

And here.

>      mc->default_ram_size = 512 * MiB - XTFPGA_MMU_RESERVED_MEMORY_SIZE;
>  }
>
> @@ -693,10 +694,10 @@ static void xtfpga_kc705_class_init(ObjectClass *oc, 
> const void *data)
>  {
>      MachineClass *mc = MACHINE_CLASS(oc);
>
> -    mc->desc = "kc705 EVB (" XTENSA_DEFAULT_CPU_MODEL ")";
> +    mc->desc = g_strdup_printf("kc705 EVB (%s)", xtensa_default_cpu_model());
>      mc->init = xtfpga_kc705_init;
>      mc->max_cpus = 32;
> -    mc->default_cpu_type = XTENSA_DEFAULT_CPU_TYPE;
> +    mc->default_cpu_type = xtensa_default_cpu_model();

And here.

-- 
Thanks.
-- Max

Reply via email to