aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorSong Gao <gaosong@loongson.cn>2024-05-14 19:07:52 +0800
committerSong Gao <gaosong@loongson.cn>2024-05-23 09:30:41 +0800
commit07c0866103d4aa2dd83c7c3e7898843e28e3893a (patch)
tree09e24f1248d94e91065b928b43d5804ae067440c /target
parent0eb285c3627b5406dd91bfa3b47402e5de92123f (diff)
downloadqemu-07c0866103d4aa2dd83c7c3e7898843e28e3893a.zip
qemu-07c0866103d4aa2dd83c7c3e7898843e28e3893a.tar.gz
qemu-07c0866103d4aa2dd83c7c3e7898843e28e3893a.tar.bz2
target/loongarch/kvm: fpu save the vreg registers high 192bit
On kvm side, get_fpu/set_fpu save the vreg registers high 192bits, but QEMU missing. Cc: qemu-stable@nongnu.org Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Bibo Mao <maobibo@loongson.cn> Message-Id: <20240514110752.989572-1-gaosong@loongson.cn>
Diffstat (limited to 'target')
-rw-r--r--target/loongarch/kvm/kvm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target/loongarch/kvm/kvm.c b/target/loongarch/kvm/kvm.c
index bc75552..8e6e27c 100644
--- a/target/loongarch/kvm/kvm.c
+++ b/target/loongarch/kvm/kvm.c
@@ -436,6 +436,9 @@ static int kvm_loongarch_get_regs_fp(CPUState *cs)
env->fcsr0 = fpu.fcsr;
for (i = 0; i < 32; i++) {
env->fpr[i].vreg.UD[0] = fpu.fpr[i].val64[0];
+ env->fpr[i].vreg.UD[1] = fpu.fpr[i].val64[1];
+ env->fpr[i].vreg.UD[2] = fpu.fpr[i].val64[2];
+ env->fpr[i].vreg.UD[3] = fpu.fpr[i].val64[3];
}
for (i = 0; i < 8; i++) {
env->cf[i] = fpu.fcc & 0xFF;
@@ -455,6 +458,9 @@ static int kvm_loongarch_put_regs_fp(CPUState *cs)
fpu.fcc = 0;
for (i = 0; i < 32; i++) {
fpu.fpr[i].val64[0] = env->fpr[i].vreg.UD[0];
+ fpu.fpr[i].val64[1] = env->fpr[i].vreg.UD[1];
+ fpu.fpr[i].val64[2] = env->fpr[i].vreg.UD[2];
+ fpu.fpr[i].val64[3] = env->fpr[i].vreg.UD[3];
}
for (i = 0; i < 8; i++) {