From f2c17436abe797e06e3618e471d721396303dd5a Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 30 Aug 2015 23:05:59 -0500 Subject: [PATCH] [AArch64] Fix issue in emitter. Loadstore pairs support only signed offsets, not unsigned. --- Source/Core/Common/Arm64Emitter.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp index 9069bedeb7..aa1badd7e0 100644 --- a/Source/Core/Common/Arm64Emitter.cpp +++ b/Source/Core/Common/Arm64Emitter.cpp @@ -766,7 +766,7 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R switch (type) { - case INDEX_UNSIGNED: + case INDEX_SIGNED: type_encode = 0b010; break; case INDEX_POST: @@ -775,8 +775,8 @@ void ARM64XEmitter::EncodeLoadStorePair(u32 op, u32 load, IndexType type, ARM64R case INDEX_PRE: type_encode = 0b011; break; - case INDEX_SIGNED: - _assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_SIGNED!", __FUNCTION__); + case INDEX_UNSIGNED: + _assert_msg_(DYNA_REC, false, "%s doesn't support INDEX_UNSIGNED!", __FUNCTION__); break; } @@ -1992,7 +1992,7 @@ void ARM64XEmitter::ABI_PushRegisters(BitSet32 registers) reg_pair.push_back((ARM64Reg)(X0 + it)); if (reg_pair.size() == 2) { - STP(INDEX_UNSIGNED, reg_pair[0], reg_pair[1], SP, current_offset); + STP(INDEX_SIGNED, reg_pair[0], reg_pair[1], SP, current_offset); reg_pair.clear(); current_offset += 16; }