aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotaz2011-10-25 00:01:44 +0300
committernotaz2011-10-30 23:48:08 +0200
commitcaeefe315aeb0c86e7c9135fac7d79d8e4e4ebd4 (patch)
treef12b24be17995d8123b3a9ae72b240eb9fa242fe
parent19776aef6da17a49e95e1bc924b26bcf49713c75 (diff)
downloadpcsx_rearmed-caeefe315aeb0c86e7c9135fac7d79d8e4e4ebd4.tar.gz
pcsx_rearmed-caeefe315aeb0c86e7c9135fac7d79d8e4e4ebd4.tar.bz2
pcsx_rearmed-caeefe315aeb0c86e7c9135fac7d79d8e4e4ebd4.zip
drc: fix mtc0 argument
HOST_CCREG is not always cc..
-rw-r--r--libpcsxcore/new_dynarec/assem_arm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c
index 3a86dba..dda2a27 100644
--- a/libpcsxcore/new_dynarec/assem_arm.c
+++ b/libpcsxcore/new_dynarec/assem_arm.c
@@ -4215,8 +4215,7 @@ void cop0_assemble(int i,struct regstat *i_regs)
emit_writeword(HOST_CCREG,(int)&last_count);
emit_movimm(0,HOST_CCREG);
emit_storereg(CCREG,HOST_CCREG);
- if(s!=1)
- emit_mov(s,1);
+ emit_loadreg(rs1[i],1);
emit_movimm(copr,0);
emit_call((int)pcsx_mtc0_ds);
return;
@@ -4230,7 +4229,9 @@ void cop0_assemble(int i,struct regstat *i_regs)
//else if(copr==12&&is_delayslot) emit_call((int)MTC0_R12);
//else
#ifdef PCSX
- if(s!=1)
+ if(s==HOST_CCREG)
+ emit_loadreg(rs1[i],1);
+ else if(s!=1)
emit_mov(s,1);
emit_movimm(copr,0);
emit_call((int)pcsx_mtc0);