aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotaz2010-12-18 19:51:06 +0200
committernotaz2010-12-18 19:51:06 +0200
commit75dec299b045862ed759c21bb309270c48089dd0 (patch)
treeb2318bf6b1aa42fd15eb385484b8b7fd1f55e751
parent87c06e512fb1b757c1c4359e46359654cfcb8b82 (diff)
downloadpcsx_rearmed-75dec299b045862ed759c21bb309270c48089dd0.tar.gz
pcsx_rearmed-75dec299b045862ed759c21bb309270c48089dd0.tar.bz2
pcsx_rearmed-75dec299b045862ed759c21bb309270c48089dd0.zip
drc: end block on syscall and hlecall, not insn after them
..or else we might get jump there, which causes it to abort. Also remove assert that's hit occasionally.
-rw-r--r--libpcsxcore/new_dynarec/new_dynarec.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c
index 2f42f43..2e7f75a 100644
--- a/libpcsxcore/new_dynarec/new_dynarec.c
+++ b/libpcsxcore/new_dynarec/new_dynarec.c
@@ -8104,7 +8104,7 @@ int new_recompile_block(int addr)
case 0x3B: strcpy(insn[i],"HLECALL"); type=HLECALL; break;
#endif
default: strcpy(insn[i],"???"); type=NI;
- printf("NI %08x @%08x\n", source[i], addr + i*4);
+ printf("NI %08x @%08x (%08x)\n", source[i], addr + i*4, addr);
break;
}
itype[i]=type;
@@ -8359,9 +8359,9 @@ int new_recompile_block(int addr)
// Don't get too close to the limit
if(i>MAXBLOCK/2) done=1;
}
- if(i>0&&itype[i-1]==SYSCALL&&stop_after_jal) done=1;
- if(itype[i-1]==HLECALL) done=1;
- assert(i<MAXBLOCK-1);
+ if(itype[i]==SYSCALL&&stop_after_jal) done=1;
+ if(itype[i]==HLECALL) done=1;
+ //assert(i<MAXBLOCK-1);
if(start+i*4==pagelimit-4) done=1;
assert(start+i*4<pagelimit);
if (i==MAXBLOCK-1) done=1;