aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec
diff options
context:
space:
mode:
authornotaz2010-12-18 19:51:06 +0200
committernotaz2010-12-18 19:51:06 +0200
commit75dec299b045862ed759c21bb309270c48089dd0 (patch)
treeb2318bf6b1aa42fd15eb385484b8b7fd1f55e751 /libpcsxcore/new_dynarec
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.
Diffstat (limited to 'libpcsxcore/new_dynarec')
-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;