diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp index 2a1548317a8e..c2000ca07f11 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_BackPatch.cpp @@ -101,10 +101,16 @@ bool JitArm64::DisasmLoadStore(const u8* ptr, u32* flags, ARM64Reg* reg) { *flags |= BackPatchInfo::FLAG_LOAD; *reg = (ARM64Reg)(inst & 0x1F); - if ((next_inst & 0x7FFFF000) != 0x5AC00000) // REV + if ((next_inst & 0x7FFFF000) == 0x5AC00000) // REV + { + u32 sxth_inst = *(u32*)(ptr + 8); + if ((sxth_inst & 0x7F800000) == 0x13000000) // SXTH + *flags |= BackPatchInfo::FLAG_EXTEND; + } + else + { *flags |= BackPatchInfo::FLAG_REVERSE; - if ((next_inst & 0x7F800000) == 0x13000000) // SXTH - *flags |= BackPatchInfo::FLAG_EXTEND; + } return true; } else if (op == 0xE4) // Store