about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorxctan <xctan@cirno.icu>2024-08-10 15:17:02 +0800
committerGitHub <noreply@github.com>2024-08-10 09:17:02 +0200
commit4187581be52e6cd638c5b2f8f7cf9db44019ea26 (patch)
treec69f8eef780662f87c0edf182919bad17affca7c /src
parent2a07636623ac8f384c78db43ca02b5041f61edc5 (diff)
downloadbox64-4187581be52e6cd638c5b2f8f7cf9db44019ea26.tar.gz
box64-4187581be52e6cd638c5b2f8f7cf9db44019ea26.zip
[RV64_DYNAREC] Fixed pending flags for large 8 & 16 bit const shifts (#1728)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_emit_shift.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_emit_shift.c b/src/dynarec/rv64/dynarec_rv64_emit_shift.c
index 0c8ee6f7..6a3e917e 100644
--- a/src/dynarec/rv64/dynarec_rv64_emit_shift.c
+++ b/src/dynarec/rv64/dynarec_rv64_emit_shift.c
@@ -80,6 +80,9 @@ void emit_shl8c(dynarec_rv64_t* dyn, int ninst, int s1, uint32_t c, int s3, int
             }
         }
         MV(s1, xZR);
+        IFX(X_PEND) {
+            SB(s1, xEmu, offsetof(x64emu_t, res));
+        }
         // OF nop
         // SF nop
         // AF nop
@@ -391,6 +394,9 @@ void emit_shl16c(dynarec_rv64_t* dyn, int ninst, int s1, uint32_t c, int s3, int
             }
         }
         MV(s1, xZR);
+        IFX(X_PEND) {
+            SH(s1, xEmu, offsetof(x64emu_t, res));
+        }
         // OF nop
         // SF nop
         // AF nop