More fixes for my own mess

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3059 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
sudonim1 2010-05-22 16:02:55 +00:00
parent e5bbb0f956
commit 6dd30213c9
3 changed files with 15 additions and 2 deletions

View File

@ -1472,11 +1472,11 @@ void recQFSRV()
//Console.WriteLn("recQFSRV()"); //Console.WriteLn("recQFSRV()");
if (_Rs_ == _Rt_ + 1) { if (_Rs_ == _Rt_ + 1) {
_flushEEreg(_Rs_);
_flushEEreg(_Rt_);
int info = eeRecompileCodeXMM(XMMINFO_WRITED); int info = eeRecompileCodeXMM(XMMINFO_WRITED);
xMOV(eax, ptr32[&cpuRegs.sa]); xMOV(eax, ptr32[&cpuRegs.sa]);
_deleteGPRtoXMMreg(_Rs_, 1);
_deleteGPRtoXMMreg(_Rt_, 1);
xMOVDQU(xRegisterSSE(EEREC_D), ptr32[eax + &cpuRegs.GPR.r[_Rt_]]); xMOVDQU(xRegisterSSE(EEREC_D), ptr32[eax + &cpuRegs.GPR.r[_Rt_]]);
return; return;
} }

View File

@ -119,6 +119,8 @@ void _eeOnWriteReg(int reg, int signext);
// if 0, only flushes if not an xmm reg (used when overwriting lower 64bits of reg) // if 0, only flushes if not an xmm reg (used when overwriting lower 64bits of reg)
void _deleteEEreg(int reg, int flush); void _deleteEEreg(int reg, int flush);
void _flushEEreg(int reg);
// allocates memory on the instruction size and returns the pointer // allocates memory on the instruction size and returns the pointer
u32* recGetImm64(u32 hi, u32 lo); u32* recGetImm64(u32 hi, u32 lo);

View File

@ -51,6 +51,17 @@ void _deleteEEreg(int reg, int flush)
_deleteMMXreg(MMX_GPR+reg, flush ? 0 : 2); _deleteMMXreg(MMX_GPR+reg, flush ? 0 : 2);
} }
void _flushEEreg(int reg)
{
if (!reg) return;
if (GPR_IS_CONST1(reg)) {
_flushConstReg(reg);
return;
}
_deleteGPRtoXMMreg(reg, 1);
_deleteMMXreg(MMX_GPR + reg, 1);
}
// if not mmx, then xmm // if not mmx, then xmm
int eeProcessHILO(int reg, int mode, int mmx) int eeProcessHILO(int reg, int mode, int mmx)
{ {