about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-03-22 22:25:56 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-03-22 22:25:56 +0100
commit98162e395f76bf998313634df5127f83ae7c9fd0 (patch)
treeeaf6df8c885e84a560dd9f93dd169378b27de15c /src/dynarec
parent9511d83955b6424c8539092446e71dfcb3d47ddc (diff)
downloadbox64-98162e395f76bf998313634df5127f83ae7c9fd0.tar.gz
box64-98162e395f76bf998313634df5127f83ae7c9fd0.zip
[ARM64_DYNAREC] Fixed potential issue on unligned path being marked while dynablock is building
Diffstat (limited to 'src/dynarec')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.h4
-rw-r--r--src/dynarec/arm64/dynarec_arm64_pass0.h4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h
index 01005fc7..771e80f5 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.h
+++ b/src/dynarec/arm64/dynarec_arm64_helper.h
@@ -981,11 +981,11 @@
     SET_DFNONE();                                                           \
 
 #ifndef IF_UNALIGNED
-#define IF_UNALIGNED(A)    if(is_addr_unaligned(A))
+#define IF_UNALIGNED(A)    if(dyn->insts[ninst].unaligned)
 #endif
 
 #ifndef IF_ALIGNED
-#define IF_ALIGNED(A) if (!is_addr_unaligned(A))
+#define IF_ALIGNED(A) if (!dyn->insts[ninst].unaligned)
 #endif
 
 #define STORE_REG(A)    STRx_U12(x##A, xEmu, offsetof(x64emu_t, regs[_##A]))
diff --git a/src/dynarec/arm64/dynarec_arm64_pass0.h b/src/dynarec/arm64/dynarec_arm64_pass0.h
index 2f4b716e..64dfd500 100644
--- a/src/dynarec/arm64/dynarec_arm64_pass0.h
+++ b/src/dynarec/arm64/dynarec_arm64_pass0.h
@@ -70,5 +70,5 @@
 #define INVERT_CARRY(A) dyn->insts[ninst].invert_carry = 1
 #define INVERT_CARRY_BEFORE(A) dyn->insts[ninst].invert_carry_before = 1
 // mark opcode as "unaligned" possible only if the current address is not marked as already unaligned
-#define IF_UNALIGNED(A) if((dyn->insts[ninst].unaligned=(is_addr_unaligned(A)?0:1)))
-#define IF_ALIGNED(A)   if((dyn->insts[ninst].unaligned=(is_addr_unaligned(A)?1:0)))
+#define IF_UNALIGNED(A) if((dyn->insts[ninst].unaligned=is_addr_unaligned(A)))
+#define IF_ALIGNED(A)   if(!(dyn->insts[ninst].unaligned=is_addr_unaligned(A)))