Disable divwux until we find out what's wrong with it, enable subfcx, and also JIT64 now sets cr[0] correctly.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5233 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Sonicadvance1 2010-03-24 22:51:06 +00:00
parent 5ff07aace6
commit 4173cd5876
3 changed files with 23 additions and 7 deletions

View File

@ -217,12 +217,29 @@ void Jit64AsmRoutineManager::GenerateCommon()
FixupBranch pLesser = J_CC(CC_L);
FixupBranch pGreater = J_CC(CC_G);
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x2)); // _x86Reg == 0
RET();
FixupBranch continue1 = J();
SetJumpTarget(pGreater);
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x4)); // _x86Reg > 0
RET();
FixupBranch continue2 = J();
SetJumpTarget(pLesser);
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x8)); // _x86Reg < 0
SetJumpTarget(continue1);
SetJumpTarget(continue2);
// cr[0] |= SPR_XER & ~(0xFFFFFFFE)
MOV(32, R(EAX), M(&PowerPC::ppcState.spr[SPR_XER]));
AND(32, R(ECX), Imm32(0xFFFFFFFE));
NOT(32, R(ECX));
AND(32, R(EAX), R(ECX));
MOVSX(32, 8, ECX, M(&PowerPC::ppcState.cr_fast[0]));
OR(32, R(ECX), R(EAX));
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), R(ECX));
RET();
fifoDirectWrite8 = AlignCode4();

View File

@ -389,8 +389,6 @@ void Jit64::subfcx(UGeckoInstruction inst)
{
INSTRUCTION_START;
JITDISABLE(Integer)
Default(inst);
return;
int a = inst.RA, b = inst.RB, d = inst.RD;
gpr.FlushLockX(ECX);
gpr.Lock(a, b, d);
@ -449,9 +447,6 @@ void Jit64::subfcx(UGeckoInstruction inst)
if (inst.Rc) {
MOV(32, R(EAX), gpr.R(d));
CALL((u8*)asm_routines.computeRc);
// Doesn't yet work for 64bit machines
//CALL((u8*)asm_routines.computeCr);
}
}
@ -561,6 +556,7 @@ void Jit64::divwux(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(Integer)
Default(inst); return;
int a = inst.RA, b = inst.RB, d = inst.RD;
gpr.FlushLockX(EDX);
gpr.Lock(a, b, d);

View File

@ -25,4 +25,7 @@ padenv.Append(
LIBS = [ 'inputcommon', 'common', ],
)
if sys.platform == 'darwin':
padenv['FRAMEWORKS'] = ['CoreFoundation', 'System' ]
padenv.SharedLibrary(env['plugin_dir']+name, files)