diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-18 12:09:03 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-18 12:09:03 +0200 |
| commit | b2b3653d67fe20d312ac450976bce4660eb71663 (patch) | |
| tree | 76c79c99b727c2ec8938a81419ffc32bfbb81827 /src | |
| parent | de102bec5e288f574cca067afa7f266e018df8cf (diff) | |
| download | box64-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.c | 7 |
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); |