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
This commit is contained in:
omegadox 2009-06-15 19:06:59 +00:00
parent 4395417b68
commit a83a4fbc0a
3 changed files with 42 additions and 35 deletions

View File

@ -20,6 +20,7 @@
#include "Common.h" #include "Common.h"
#include <string> #include <string>
#include <mmsystem.h>
namespace Common namespace Common
{ {

View File

@ -1050,7 +1050,7 @@ void Update()
// Calculate actual refresh rate // Calculate actual refresh rate
static u64 LastTick = 0; static u64 LastTick = 0;
static int UpdateCheck = timeGetTime() + 1000, TickProgress = 0; static int UpdateCheck = timeGetTime() + 1000, TickProgress = 0;
if (UpdateCheck < timeGetTime()) if (UpdateCheck < (int)timeGetTime())
{ {
UpdateCheck = timeGetTime() + 1000; UpdateCheck = timeGetTime() + 1000;
TickProgress = CoreTiming::GetTicks() - LastTick; TickProgress = CoreTiming::GetTicks() - LastTick;

View File

@ -217,45 +217,51 @@ void Jit64::bcx(UGeckoInstruction inst)
void Jit64::bcctrx(UGeckoInstruction inst) void Jit64::bcctrx(UGeckoInstruction inst)
{ {
if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITBranchOff) // TODO: This instruction branches to count register
{Default(inst); return;} // turn off from debugger // JIT needs currently does not implement this opcode,
// so we will fall back to the interpretor
INSTRUCTION_START; Default(inst);
gpr.Flush(FLUSH_ALL); //if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITBranchOff)
fpr.Flush(FLUSH_ALL); // {Default(inst); return;} // turn off from debugger
// bool fastway = true; //INSTRUCTION_START;
if ((inst.BO & 16) == 0) //gpr.Flush(FLUSH_ALL);
{ //fpr.Flush(FLUSH_ALL);
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; //// bool fastway = true;
if(inst.BO & 8)
branch = CC_NZ; //if ((inst.BO & 16) == 0)
else //{
branch = CC_Z; // PanicAlert("Bizarro bcctrx %08x, not supported.", inst.hex);
*/ // _assert_msg_(DYNA_REC, 0, "Bizarro bcctrx");
// TODO(ector): Why is this commented out? // /*
//SETcc(branch, R(ECX)); // fastway = false;
// check for EBX // MOV(32, M(&PC), Imm32(js.compilerPC+4));
//TEST(32, R(ECX), R(ECX)); // MOV(32, R(EAX), M(&CR));
//linkEnd = J_CC(branch); // XOR(32, R(ECX), R(ECX));
} // AND(32, R(EAX), Imm32(0x80000000 >> inst.BI));
// NPC = CTR & 0xfffffffc;
MOV(32, R(EAX), M(&CTR)); // CCFlags branch;
if (inst.LK) // if(inst.BO & 8)
MOV(32, M(&LR), Imm32(js.compilerPC + 4)); // LR = PC + 4; // branch = CC_NZ;
AND(32, R(EAX), Imm32(0xFFFFFFFC)); // else
WriteExitDestInEAX(0); // 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);
} }