qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 06/20] target/sparc: Implement CPUClass::datapath_is_big_endian


From: Philippe Mathieu-Daudé
Subject: [PATCH 06/20] target/sparc: Implement CPUClass::datapath_is_big_endian
Date: Wed, 4 Dec 2024 21:25:48 +0100

While the SPARC data endianness can be changed at runtime,
we do not implement that; only big endianness is used.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/sparc/cpu.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index dd7af86de73..de0386dbf64 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -688,6 +688,20 @@ static void sparc_cpu_dump_state(CPUState *cs, FILE *f, 
int flags)
     qemu_fprintf(f, "\n");
 }
 
+static bool sparc_cpu_datapath_is_big_endian(CPUState *cs)
+{
+#if defined(TARGET_SPARC64)
+    /*
+     * SPARCv9 has a couple of PSTATE bits that set the endianness:
+     * Current Little Endian (PS_CLE) and Trap Little Endian (PS_TLE).
+     * We don't implement that yet.
+     */
+    return true;
+#else
+    return true;
+#endif
+}
+
 static void sparc_cpu_set_pc(CPUState *cs, vaddr value)
 {
     SPARCCPU *cpu = SPARC_CPU(cs);
@@ -958,6 +972,7 @@ static void sparc_cpu_class_init(ObjectClass *oc, void 
*data)
 
     cc->class_by_name = sparc_cpu_class_by_name;
     cc->parse_features = sparc_cpu_parse_features;
+    cc->datapath_is_big_endian = sparc_cpu_datapath_is_big_endian;
     cc->has_work = sparc_cpu_has_work;
     cc->mmu_index = sparc_cpu_mmu_index;
     cc->dump_state = sparc_cpu_dump_state;
-- 
2.45.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]