From a83a4fbc0a6418969f6e24fa83a450d4b3a87c31 Mon Sep 17 00:00:00 2001 From: omegadox Date: Mon, 15 Jun 2009 19:06:59 +0000 Subject: [PATCH] bcctrx opcode will fall back to the interpreter, and a minor compile and warning fix. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3454 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/Timer.h | 1 + Source/Core/Core/Src/HW/VideoInterface.cpp | 2 +- .../Core/Src/PowerPC/Jit64/Jit_Branch.cpp | 74 ++++++++++--------- 3 files changed, 42 insertions(+), 35 deletions(-) diff --git a/Source/Core/Common/Src/Timer.h b/Source/Core/Common/Src/Timer.h index 0ee730df96..e905d962e4 100644 --- a/Source/Core/Common/Src/Timer.h +++ b/Source/Core/Common/Src/Timer.h @@ -20,6 +20,7 @@ #include "Common.h" #include +#include namespace Common { diff --git a/Source/Core/Core/Src/HW/VideoInterface.cpp b/Source/Core/Core/Src/HW/VideoInterface.cpp index 15b7454745..890bff45e2 100644 --- a/Source/Core/Core/Src/HW/VideoInterface.cpp +++ b/Source/Core/Core/Src/HW/VideoInterface.cpp @@ -1050,7 +1050,7 @@ void Update() // Calculate actual refresh rate static u64 LastTick = 0; static int UpdateCheck = timeGetTime() + 1000, TickProgress = 0; - if (UpdateCheck < timeGetTime()) + if (UpdateCheck < (int)timeGetTime()) { UpdateCheck = timeGetTime() + 1000; TickProgress = CoreTiming::GetTicks() - LastTick; diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp index 331cf26996..d1fed6b09e 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp @@ -217,45 +217,51 @@ void Jit64::bcx(UGeckoInstruction inst) void Jit64::bcctrx(UGeckoInstruction inst) { - if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITBranchOff) - {Default(inst); return;} // turn off from debugger + // TODO: This instruction branches to count register + // JIT needs currently does not implement this opcode, + // so we will fall back to the interpretor - INSTRUCTION_START; + Default(inst); - gpr.Flush(FLUSH_ALL); - fpr.Flush(FLUSH_ALL); + //if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITBranchOff) + // {Default(inst); return;} // turn off from debugger - // bool fastway = true; + //INSTRUCTION_START; - if ((inst.BO & 16) == 0) - { - PanicAlert("Bizarro bcctrx %08x, not supported.", inst.hex); - _assert_msg_(DYNA_REC, 0, "Bizarro bcctrx"); - /* - fastway = false; - MOV(32, M(&PC), Imm32(js.compilerPC+4)); - MOV(32, R(EAX), M(&CR)); - XOR(32, R(ECX), R(ECX)); - AND(32, R(EAX), Imm32(0x80000000 >> inst.BI)); + //gpr.Flush(FLUSH_ALL); + //fpr.Flush(FLUSH_ALL); - CCFlags branch; - if(inst.BO & 8) - branch = CC_NZ; - else - branch = CC_Z; - */ - // TODO(ector): Why is this commented out? - //SETcc(branch, R(ECX)); - // check for EBX - //TEST(32, R(ECX), R(ECX)); - //linkEnd = J_CC(branch); - } - // NPC = CTR & 0xfffffffc; - MOV(32, R(EAX), M(&CTR)); - if (inst.LK) - MOV(32, M(&LR), Imm32(js.compilerPC + 4)); // LR = PC + 4; - AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(0); + //// bool fastway = true; + + //if ((inst.BO & 16) == 0) + //{ + // PanicAlert("Bizarro bcctrx %08x, not supported.", inst.hex); + // _assert_msg_(DYNA_REC, 0, "Bizarro bcctrx"); + // /* + // fastway = false; + // MOV(32, M(&PC), Imm32(js.compilerPC+4)); + // MOV(32, R(EAX), M(&CR)); + // XOR(32, R(ECX), R(ECX)); + // AND(32, R(EAX), Imm32(0x80000000 >> inst.BI)); + + // CCFlags branch; + // if(inst.BO & 8) + // branch = CC_NZ; + // else + // branch = CC_Z; + // */ + // // TODO(ector): Why is this commented out? + // //SETcc(branch, R(ECX)); + // // check for EBX + // //TEST(32, R(ECX), R(ECX)); + // //linkEnd = J_CC(branch); + //} + //// NPC = CTR & 0xfffffffc; + //MOV(32, R(EAX), M(&CTR)); + //if (inst.LK) + // MOV(32, M(&LR), Imm32(js.compilerPC + 4)); // LR = PC + 4; + //AND(32, R(EAX), Imm32(0xFFFFFFFC)); + //WriteExitDestInEAX(0); }