qemu-devel
[Top][All Lists]
Advanced

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

Re: [RFC PATCH v3 01/44] target/loongarch: Add LSX data type VReg


From: Richard Henderson
Subject: Re: [RFC PATCH v3 01/44] target/loongarch: Add LSX data type VReg
Date: Sun, 23 Apr 2023 20:41:35 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0

On 4/20/23 09:06, Song Gao wrote:
diff --git a/target/loongarch/machine.c b/target/loongarch/machine.c
index b1e523ea72..a67b735a32 100644
--- a/target/loongarch/machine.c
+++ b/target/loongarch/machine.c
@@ -10,6 +10,112 @@
  #include "migration/cpu.h"
  #include "internals.h"
+/* FPU state */
+static int get_fpr(QEMUFile *f, void *pv, size_t size,
+                   const VMStateField *field)
+{
+    fpr_t *v = pv;
+
+    qemu_get_sbe64s(f, &v->vreg.D(0));
+    return 0;
+}
+
+static int put_fpr(QEMUFile *f, void *pv, size_t size,
+                   const VMStateField *field, JSONWriter *vmdesc)
+{
+    fpr_t *v = pv;
+
+    qemu_put_sbe64s(f, &v->vreg.D(0));
+    return 0;
+}
+
+static const VMStateInfo vmstate_info_fpr = {
+    .name = "fpr",
+    .get  = get_fpr,
+    .put  = put_fpr,
+};

These functions are old style.
Compare target/i386/machine.c, vmstate_xmm_reg.

I notice you're migrating the same data twice, between fpu and lsx.
Compare target/i386/machine.c, vmstate_ymmh_reg, for migrating only the upper half with lsx. I assume lsx without fpu is not a valid cpu configuration?

  const VMStateDescription vmstate_loongarch_cpu = {
      .name = "cpu",
      .version_id = 0,
      .minimum_version_id = 0,
      .fields = (VMStateField[]) {
-
          VMSTATE_UINTTL_ARRAY(env.gpr, LoongArchCPU, 32),
          VMSTATE_UINTTL(env.pc, LoongArchCPU),
-        VMSTATE_UINT64_ARRAY(env.fpr, LoongArchCPU, 32),
-        VMSTATE_UINT32(env.fcsr0, LoongArchCPU),
-        VMSTATE_BOOL_ARRAY(env.cf, LoongArchCPU, 8),
/* Remaining CSRs */
          VMSTATE_UINT64(env.CSR_CRMD, LoongArchCPU),
@@ -99,4 +200,8 @@ const VMStateDescription vmstate_loongarch_cpu = {
VMSTATE_END_OF_LIST()
      },
+    .subsections = (const VMStateDescription*[]) {
+        &vmstate_fpu,
+        &vmstate_lsx,
+    }

Need to increment version_id and minimum_version_id.


r~




reply via email to

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