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();
     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();
     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();
     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();
     mc->default_ram_size = 1 * GiB - XTFPGA_MMU_RESERVED_MEMORY_SIZE;
 }
 
diff --git a/linux-user/xtensa/elfload.c b/linux-user/xtensa/elfload.c
index 68aeed855f9..9bb740d357e 100644
--- a/linux-user/xtensa/elfload.c
+++ b/linux-user/xtensa/elfload.c
@@ -4,11 +4,11 @@
 #include "qemu.h"
 #include "loader.h"
 #include "target_elf.h"
-
+#include "target/xtensa/cpu-qom.h"
 
 const char *get_elf_cpu_model(uint32_t eflags)
 {
-    return XTENSA_DEFAULT_CPU_MODEL;
+    return xtensa_default_cpu_model();
 }
 
 void elf_core_copy_regs(target_elf_gregset_t *r, const CPUXtensaState *env)
diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
index ecc5e093a40..6220edda976 100644
--- a/target/xtensa/cpu.c
+++ b/target/xtensa/cpu.c
@@ -29,6 +29,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/target-info.h"
 #include "qapi/error.h"
 #include "cpu.h"
 #include "fpu/softfloat.h"
@@ -40,6 +41,10 @@
 #include "system/memory.h"
 #endif
 
+const char *xtensa_default_cpu_model(void)
+{
+    return target_big_endian() ? "fsf" : "dc232b";
+}
 
 static void xtensa_cpu_set_pc(CPUState *cs, vaddr value)
 {
-- 
2.52.0


Reply via email to