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:
parent
5ff07aace6
commit
4173cd5876
|
@ -217,12 +217,29 @@ void Jit64AsmRoutineManager::GenerateCommon()
|
||||||
FixupBranch pLesser = J_CC(CC_L);
|
FixupBranch pLesser = J_CC(CC_L);
|
||||||
FixupBranch pGreater = J_CC(CC_G);
|
FixupBranch pGreater = J_CC(CC_G);
|
||||||
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x2)); // _x86Reg == 0
|
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x2)); // _x86Reg == 0
|
||||||
RET();
|
FixupBranch continue1 = J();
|
||||||
|
|
||||||
SetJumpTarget(pGreater);
|
SetJumpTarget(pGreater);
|
||||||
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x4)); // _x86Reg > 0
|
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x4)); // _x86Reg > 0
|
||||||
RET();
|
FixupBranch continue2 = J();
|
||||||
|
|
||||||
SetJumpTarget(pLesser);
|
SetJumpTarget(pLesser);
|
||||||
MOV(8, M(&PowerPC::ppcState.cr_fast[0]), Imm8(0x8)); // _x86Reg < 0
|
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();
|
RET();
|
||||||
|
|
||||||
fifoDirectWrite8 = AlignCode4();
|
fifoDirectWrite8 = AlignCode4();
|
||||||
|
|
|
@ -389,8 +389,6 @@ void Jit64::subfcx(UGeckoInstruction inst)
|
||||||
{
|
{
|
||||||
INSTRUCTION_START;
|
INSTRUCTION_START;
|
||||||
JITDISABLE(Integer)
|
JITDISABLE(Integer)
|
||||||
Default(inst);
|
|
||||||
return;
|
|
||||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||||
gpr.FlushLockX(ECX);
|
gpr.FlushLockX(ECX);
|
||||||
gpr.Lock(a, b, d);
|
gpr.Lock(a, b, d);
|
||||||
|
@ -449,9 +447,6 @@ void Jit64::subfcx(UGeckoInstruction inst)
|
||||||
if (inst.Rc) {
|
if (inst.Rc) {
|
||||||
MOV(32, R(EAX), gpr.R(d));
|
MOV(32, R(EAX), gpr.R(d));
|
||||||
CALL((u8*)asm_routines.computeRc);
|
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
|
INSTRUCTION_START
|
||||||
JITDISABLE(Integer)
|
JITDISABLE(Integer)
|
||||||
|
Default(inst); return;
|
||||||
int a = inst.RA, b = inst.RB, d = inst.RD;
|
int a = inst.RA, b = inst.RB, d = inst.RD;
|
||||||
gpr.FlushLockX(EDX);
|
gpr.FlushLockX(EDX);
|
||||||
gpr.Lock(a, b, d);
|
gpr.Lock(a, b, d);
|
||||||
|
|
|
@ -25,4 +25,7 @@ padenv.Append(
|
||||||
LIBS = [ 'inputcommon', 'common', ],
|
LIBS = [ 'inputcommon', 'common', ],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
padenv['FRAMEWORKS'] = ['CoreFoundation', 'System' ]
|
||||||
|
|
||||||
padenv.SharedLibrary(env['plugin_dir']+name, files)
|
padenv.SharedLibrary(env['plugin_dir']+name, files)
|
||||||
|
|
Loading…
Reference in New Issue