about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-18 12:09:03 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-18 12:09:03 +0200
commitb2b3653d67fe20d312ac450976bce4660eb71663 (patch)
tree76c79c99b727c2ec8938a81419ffc32bfbb81827 /src
parentde102bec5e288f574cca067afa7f266e018df8cf (diff)
downloadbox64-b2b3653d67fe20d312ac450976bce4660eb71663.tar.gz
box64-b2b3653d67fe20d312ac450976bce4660eb71663.zip
[ARM64_DYNAREC] Fixed a regression with native flag commit (might help #1947)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_functions.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c
index ae36cd9b..6861eb11 100644
--- a/src/dynarec/arm64/dynarec_arm64_functions.c
+++ b/src/dynarec/arm64/dynarec_arm64_functions.c
@@ -832,6 +832,12 @@ uint8_t flag2native(uint8_t flags)
     return ret;
 }
 
+int flagIsNative(uint8_t flags)
+{
+    if(flags&(X_AF|X_PF|X_CF)) return 0;
+    return 1;
+}
+
 static int markNativeFlags(dynarec_native_t* dyn, int ninst, uint8_t flags, int start)
 {
     while(ninst>=0) {
@@ -844,6 +850,7 @@ static int markNativeFlags(dynarec_native_t* dyn, int ninst, uint8_t flags, int
         // flags destroyed, cancel native flags
         if(dyn->insts[ninst].nat_flags_op==NAT_FLAG_OP_UNUSABLE) return 0;
         if(dyn->insts[ninst].nat_flags_op==NAT_FLAG_OP_CANCELED) return 0;
+        if(!flagIsNative(dyn->insts[ninst].x64.use_flags))  return 0;
         if(start) {
             start = 0;
             flags |= flag2native(dyn->insts[ninst].x64.need_before);