]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target/loongarch: Fix CSR STLBPS register write emulation
authorBibo Mao <maobibo@loongson.cn>
Wed, 18 Jun 2025 02:51:34 +0000 (10:51 +0800)
committerBibo Mao <maobibo@loongson.cn>
Fri, 11 Jul 2025 06:47:15 +0000 (14:47 +0800)
Function helper_csrwr_stlbps() is emulation with CSR STLBPS register
write operation. However there is only parameter checking action, and
no register updating action. Here update value of CSR_STLBPS when
parameter passes to check.

Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Song Gao <gaosong@loongson.cn>
target/loongarch/tcg/csr_helper.c

index 46d331ce8adf4dbaa3374a8a8466e26a00648681..28b1bb86bd9775c4d806136a6c4bc3e1687347d3 100644 (file)
@@ -29,7 +29,11 @@ target_ulong helper_csrwr_stlbps(CPULoongArchState *env, target_ulong val)
     if (!check_ps(env, tlb_ps)) {
         qemu_log_mask(LOG_GUEST_ERROR,
                       "Attempted set ps %d\n", tlb_ps);
+    } else {
+        /* Only update PS field, reserved bit keeps zero */
+        env->CSR_STLBPS = FIELD_DP64(old_v, CSR_STLBPS, PS, tlb_ps);
     }
+
     return old_v;
 }