From 10b54e80a9e2a6e94e94353acb25fd437630e180 Mon Sep 17 00:00:00 2001 From: cottonvibes Date: Wed, 27 Aug 2008 05:52:43 +0000 Subject: [PATCH] changed another opcode that might've had an allocation conflict... git-svn-id: http://pcsx2-playground.googlecode.com/svn/trunk@62 a6443dda-0b58-4228-96e9-037be469359c --- pcsx2/x86/iVUmicro.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/pcsx2/x86/iVUmicro.c b/pcsx2/x86/iVUmicro.c index ec7a066137..6bca9d7825 100644 --- a/pcsx2/x86/iVUmicro.c +++ b/pcsx2/x86/iVUmicro.c @@ -5413,22 +5413,27 @@ void recVUMI_FMEQ( VURegs *VU, int info ) void recVUMI_FMOR( VURegs *VU, int info ) { - //int fsreg, ftreg; - int ftreg; + int fsreg, ftreg; if ( _Ft_ == 0 ) return; if( _Fs_ == 0 ) { - ftreg = ALLOCVI(_Ft_,MODE_WRITE);//|MODE_8BITREG); - MOVZX32M16toR(ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1)); + ftreg = ALLOCVI(_Ft_, MODE_WRITE);//|MODE_8BITREG); + MOVZX32M16toR( ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1) ); } - if( _Ft_ == _Fs_ ) { - ftreg = ALLOCVI(_Ft_, MODE_WRITE|MODE_READ);//|MODE_8BITREG); - OR16MtoR(ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1)); + else if( _Ft_ == _Fs_ ) { + ftreg = ALLOCVI(_Ft_, MODE_WRITE);//|MODE_READ|MODE_8BITREG); + OR16MtoR( ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1) ); } else { + fsreg = _checkX86reg(X86TYPE_VI|(VU==&VU1?X86TYPE_VU1:0), _Fs_, MODE_READ); ftreg = ALLOCVI(_Ft_, MODE_WRITE); - MOVZX32M16toR( ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1)); - OR16MtoR( ftreg, VU_VI_ADDR(_Fs_, 1) ); + + MOVZX32M16toR( ftreg, VU_VI_ADDR(REG_MAC_FLAG, 1) ); + + if( fsreg >= 0 ) + OR16RtoR( ftreg, fsreg ); + else + OR16MtoR( ftreg, VU_VI_ADDR(_Fs_, 1) ); } }