aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-12-10 19:20:33 +0200
committernotaz2011-12-11 01:39:13 +0200
commitcbbd8dd7705d5cb7c748a7ffaf2ccc74893b3910 (patch)
tree9a96b0abff703147b675fa1b339066f1714d2db5 /libpcsxcore
parent3b349afa0c00ef0cbcb3de75ab6f70747bb890b2 (diff)
downloadpcsx_rearmed-cbbd8dd7705d5cb7c748a7ffaf2ccc74893b3910.tar.gz
pcsx_rearmed-cbbd8dd7705d5cb7c748a7ffaf2ccc74893b3910.tar.bz2
pcsx_rearmed-cbbd8dd7705d5cb7c748a7ffaf2ccc74893b3910.zip
drc: fix bad gte unneeded reg assumption
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/new_dynarec/assem_arm.c4
-rw-r--r--libpcsxcore/new_dynarec/new_dynarec.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c
index 984b0ce..ebf733b 100644
--- a/libpcsxcore/new_dynarec/assem_arm.c
+++ b/libpcsxcore/new_dynarec/assem_arm.c
@@ -4492,8 +4492,8 @@ static void c2op_assemble(int i,struct regstat *i_regs)
if (gte_handlers[c2op]!=NULL) {
need_flags=!(gte_unneeded[i+1]>>63); // +1 because of how liveness detection works
need_ir=(gte_unneeded[i+1]&0xe00)!=0xe00;
- assem_debug("gte unneeded %016llx, need_flags %d, need_ir %d\n",
- gte_unneeded[i+1],need_flags,need_ir);
+ assem_debug("gte op %08x, unneeded %016llx, need_flags %d, need_ir %d\n",
+ source[i],gte_unneeded[i+1],need_flags,need_ir);
if(new_dynarec_hacks&NDHACK_GTE_NO_FLAGS)
need_flags=0;
int shift = (source[i] >> 19) & 1;
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c
index 8cf8dfb..37706bc 100644
--- a/libpcsxcore/new_dynarec/new_dynarec.c
+++ b/libpcsxcore/new_dynarec/new_dynarec.c
@@ -7025,7 +7025,7 @@ void unneeded_registers(int istart,int iend,int r)
uu&=~(1LL<<us2[i]);
gte_u&=~gte_rs[i];
if(gte_rs[i]&&rt1[i]&&(unneeded_reg[i+1]&(1ll<<rt1[i])))
- gte_u|=gte_rs[i]; // MFC2/CFC2 to dead register, unneeded
+ gte_u|=gte_rs[i]&gte_unneeded[i+1]; // MFC2/CFC2 to dead register, unneeded
// Source-target dependencies
uu&=~(tdep<<dep1[i]);
uu&=~(tdep<<dep2[i]);