From 6f73162df404c13476f3815b075d493f5a72b4ab Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 24 Nov 2013 10:50:59 +0000 Subject: [PATCH] [ARM] Implement the Acid test in the JIT core. This test is currently broken in JIT64 since it uses cr instead of cr_fast. --- .../Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp index c70a2b2f3d..eac488a5b0 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp @@ -135,9 +135,11 @@ void JitArm::bx(UGeckoInstruction inst) else destination = js.compilerPC + SignExt26(inst.LI << 2); #ifdef ACID_TEST - // TODO: Not implemented yet. - //if (inst.LK) - //AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); + if (inst.LK) + { + MOV(R14, 0); + STRB(R14, R9, PPCSTATE_OFF(cr_fast[0])); + } #endif if (destination == js.compilerPC) { @@ -329,8 +331,11 @@ void JitArm::bclrx(UGeckoInstruction inst) // This below line can be used to prove that blr "eats flags" in practice. // This observation will let us do a lot of fun observations. #ifdef ACID_TEST - // TODO: Not yet implemented - // AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); + if (inst.LK) + { + MOV(R14, 0); + STRB(R14, R9, PPCSTATE_OFF(cr_fast[0])); + } #endif //MOV(32, R(EAX), M(&LR));