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 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();
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -25,4 +25,7 @@ padenv.Append(
|
|||
LIBS = [ 'inputcommon', 'common', ],
|
||||
)
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
padenv['FRAMEWORKS'] = ['CoreFoundation', 'System' ]
|
||||
|
||||
padenv.SharedLibrary(env['plugin_dir']+name, files)
|
||||
|
|
Loading…
Reference in New Issue