Hi Jiajie, Song,

(+Huacai)

On 17/8/23 11:31, Song Gao wrote:
From: Jiajie Chen <c...@jia.je>

Add object class for future loongarch32 cpus. It is derived from the
loongarch64 object class.

Is it how the architecture design happened? IIUC per [*] it seems
the arch was designed as a whole then adapted per segment (32/R,64).
So from a QOM PoV better would be to have a abstract 'common' parent
objs/classes, then derive 32/64 from it.
IMHO this matters for the maintainability of target/loongarch/, but
if this isn't important then I won't object much to this series.

Regards,

Phil.

[*] https://lore.kernel.org/linux-arch/20210706041820.1536502-1-chenhua...@loongson.cn/

Signed-off-by: Jiajie Chen <c...@jia.je>
Reviewed-by: Richard Henderson <richard.hender...@linaro.org>
Signed-off-by: Song Gao <gaos...@loongson.cn>
---
  target/loongarch/cpu.c | 19 +++++++++++++++++++
  target/loongarch/cpu.h |  1 +
  2 files changed, 20 insertions(+)


@@ -750,6 +760,15 @@ static const TypeInfo loongarch_cpu_type_infos[] = {
          .class_size = sizeof(LoongArchCPUClass),
          .class_init = loongarch_cpu_class_init,
      },
+    {
+        .name = TYPE_LOONGARCH32_CPU,
+        .parent = TYPE_LOONGARCH_CPU,
+        .instance_size = sizeof(LoongArchCPU),
+
+        .abstract = true,
+        .class_size = sizeof(LoongArchCPUClass),
+        .class_init = loongarch32_cpu_class_init,
+    },
      DEFINE_LOONGARCH_CPU_TYPE("la464", loongarch_la464_initfn),
  };
diff --git a/target/loongarch/cpu.h b/target/loongarch/cpu.h
index 5a71d64a04..2af4c414b0 100644
--- a/target/loongarch/cpu.h
+++ b/target/loongarch/cpu.h
@@ -382,6 +382,7 @@ struct ArchCPU {
  };
#define TYPE_LOONGARCH_CPU "loongarch-cpu"
+#define TYPE_LOONGARCH32_CPU "loongarch32-cpu"
OBJECT_DECLARE_CPU_TYPE(LoongArchCPU, LoongArchCPUClass,
                          LOONGARCH_CPU)


Reply via email to