about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-08-10 09:34:09 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-08-10 09:34:09 +0200
commitbd4454d8ad925cb17ccf3beaa6c872440fede753 (patch)
treeb70e56850118569cf906ce01ab3290ed87c4a24b /src
parent4187581be52e6cd638c5b2f8f7cf9db44019ea26 (diff)
downloadbox64-bd4454d8ad925cb17ccf3beaa6c872440fede753.tar.gz
box64-bd4454d8ad925cb17ccf3beaa6c872440fede753.zip
[ARM64_DYNAREC] Fixed pending flags for large 8 & 16 bit const shifts
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_emit_shift.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_emit_shift.c b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
index 84166055..5516a8ce 100644
--- a/src/dynarec/arm64/dynarec_arm64_emit_shift.c
+++ b/src/dynarec/arm64/dynarec_arm64_emit_shift.c
@@ -366,6 +366,9 @@ void emit_shl8c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int s
             BFXILw(xFlags, s3, 7, 1);   // insert F_CF from s3[7:1]
         }
         MOVw_REG(s1, xZR);
+        IFX(X_PEND) {
+            STRB_U12(s1, xEmu, offsetof(x64emu_t, res));
+        }
         IFX(X_OF) {
             BFCw(xFlags, F_OF, 1);
         }
@@ -630,6 +633,9 @@ void emit_shl16c(dynarec_arm_t* dyn, int ninst, int s1, uint32_t c, int s3, int
             BFXILw(xFlags, s3, 15, 1);   // insert F_CF from s3[15:1]
         }
         MOVw_REG(s1, xZR);
+        IFX(X_PEND) {
+            STRH_U12(s1, xEmu, offsetof(x64emu_t, res));
+        }
         IFX(X_OF) {
             BFCw(xFlags, F_OF, 1);
         }