From 71e4e67ae13e48f8322726d8e73920fa4806031b Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 2 Dec 2014 19:18:27 -0600 Subject: [PATCH] [AArch64] Only flush registers that are needed with interpreter fallback. We try to keep as many registers as possible in callee saved registers, so if we have guest registers in the correct registers and the interpreter call we are falling back to doesn't need the registers then we can dump just those ones. Which means we don't have to dump 100% of our register state when falling to the interpreter. --- Source/Core/Core/PowerPC/JitArm64/Jit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index 7ea0c16d65..97f0b00336 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -49,8 +49,8 @@ void JitArm64::unknown_instruction(UGeckoInstruction inst) void JitArm64::FallBackToInterpreter(UGeckoInstruction inst) { - gpr.Flush(FlushMode::FLUSH_ALL); - fpr.Flush(FlushMode::FLUSH_ALL); + gpr.Flush(FlushMode::FLUSH_INTERPRETER, js.op); + fpr.Flush(FlushMode::FLUSH_INTERPRETER, js.op); Interpreter::_interpreterInstruction instr = GetInterpreterOp(inst); MOVI2R(W0, inst.hex); MOVI2R(X30, (u64)instr);