From 98162e395f76bf998313634df5127f83ae7c9fd0 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 22 Mar 2025 22:25:56 +0100 Subject: [ARM64_DYNAREC] Fixed potential issue on unligned path being marked while dynablock is building --- src/dynarec/arm64/dynarec_arm64_helper.h | 4 ++-- src/dynarec/arm64/dynarec_arm64_pass0.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') 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))) -- cgit 1.4.1