qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v3 2/6] target/loongarch: Add loongarch32 cpu la132


From: Richard Henderson
Subject: Re: [PATCH v3 2/6] target/loongarch: Add loongarch32 cpu la132
Date: Mon, 7 Aug 2023 08:17:01 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 8/7/23 02:45, Jiajie Chen wrote:
Add la132 as a loongarch32 cpu type and allow virt machine to be used
with la132 instead of la464.

Signed-off-by: Jiajie Chen <c@jia.je>
---
  hw/loongarch/virt.c    |  5 -----
  target/loongarch/cpu.c | 41 +++++++++++++++++++++++++++++++++++++++++
  target/loongarch/cpu.h | 11 +++++++++++
  3 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index e19b042ce8..af15bf5aaa 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -798,11 +798,6 @@ static void loongarch_init(MachineState *machine)
          cpu_model = LOONGARCH_CPU_TYPE_NAME("la464");
      }
- if (!strstr(cpu_model, "la464")) {
-        error_report("LoongArch/TCG needs cpu type la464");
-        exit(1);
-    }
-
      if (ram_size < 1 * GiB) {
          error_report("ram_size must be greater than 1G.");
          exit(1);
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c
index ad93ecac92..d31efe86da 100644
--- a/target/loongarch/cpu.c
+++ b/target/loongarch/cpu.c
@@ -362,6 +362,8 @@ static void loongarch_la464_initfn(Object *obj)
      CPULoongArchState *env = &cpu->env;
      int i;
+ env->mode = LA64;
+
      for (i = 0; i < 21; i++) {
          env->cpucfg[i] = 0x0;
      }
@@ -439,6 +441,20 @@ static void loongarch_la464_initfn(Object *obj)
      env->CSR_ASID = FIELD_DP64(0, CSR_ASID, ASIDBITS, 0xa);
  }
+static void loongarch_la132_initfn(Object *obj)
+{
+    LoongArchCPU *cpu = LOONGARCH_CPU(obj);
+    CPULoongArchState *env = &cpu->env;
+
+    env->mode = LA32;
+
+    cpu->dtb_compatible = "loongarch,Loongson-3C103";
+
+    uint32_t data = 0;
+    data = FIELD_DP32(data, CPUCFG1, ARCH, 1); /* LA32 */
+    env->cpucfg[1] = data;
+}

This is missing quite a lot of other initialization. I would expect this to look more like loongarch_la464_initfn with quite a lot of CPUCFG settings.

This patch should be sorted after support for LA32 is added to the translator, so that when bisecting it is not possible to select this cpu when support is not present.


r~




reply via email to

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