aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-02-15 17:37:53 +0200
committernotaz2011-02-17 00:48:38 +0200
commit6ebf4adfcb5e513944828191ca7795ed53eaa638 (patch)
tree40d818e3dc82fcb96f2909e69e417be56d4cb8df /libpcsxcore
parentc22b95ab8ab42f87d0af5ce8333b5b6b386b98ee (diff)
downloadpcsx_rearmed-6ebf4adfcb5e513944828191ca7795ed53eaa638.tar.gz
pcsx_rearmed-6ebf4adfcb5e513944828191ca7795ed53eaa638.tar.bz2
pcsx_rearmed-6ebf4adfcb5e513944828191ca7795ed53eaa638.zip
drc: fix p32 32K memset stupidity, don't use p32 instead
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/new_dynarec/new_dynarec.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c
index 641c673..99598be 100644
--- a/libpcsxcore/new_dynarec/new_dynarec.c
+++ b/libpcsxcore/new_dynarec/new_dynarec.c
@@ -8490,9 +8490,10 @@ int new_recompile_block(int addr)
int ds=0;
int cc=0;
int hr;
-
+
+#ifndef FORCE32
provisional_32bit();
-
+#endif
if((u_int)addr&1) {
// First instruction is delay slot
cc=-1;
@@ -8534,6 +8535,7 @@ int new_recompile_block(int addr)
}
}
}
+#ifndef FORCE32
// If something jumps here with 64-bit values
// then promote those registers to 64 bits
if(bt[i])
@@ -8568,8 +8570,7 @@ int new_recompile_block(int addr)
current.is32=temp_is32;
}
}
-#ifdef FORCE32
- memset(p32, 0xff, sizeof(p32));
+#else
current.is32=-1LL;
#endif
@@ -8577,7 +8578,7 @@ int new_recompile_block(int addr)
regs[i].wasconst=current.isconst;
regs[i].was32=current.is32;
regs[i].wasdirty=current.dirty;
- #ifdef DESTRUCTIVE_WRITEBACK
+ #if defined(DESTRUCTIVE_WRITEBACK) && !defined(FORCE32)
// To change a dirty register from 32 to 64 bits, we must write
// it out during the previous cycle (for branches, 2 cycles)
if(i<slen-1&&bt[i+1]&&itype[i-1]!=UJUMP&&itype[i-1]!=CJUMP&&itype[i-1]!=SJUMP&&itype[i-1]!=RJUMP&&itype[i-1]!=FJUMP)