diff options
author | notaz | 2011-09-20 00:01:39 +0300 |
---|---|---|
committer | notaz | 2011-09-20 00:01:39 +0300 |
commit | 76f71c2748608a51e1f9a49273eb3ff58e715700 (patch) | |
tree | a3bd4185a1745ac6e6d3e354be512f55377e3e15 /libpcsxcore/new_dynarec/new_dynarec.c | |
parent | eba830cd5dc35bc900ea60d8c06ee582178280a4 (diff) | |
download | pcsx_rearmed-76f71c2748608a51e1f9a49273eb3ff58e715700.tar.gz pcsx_rearmed-76f71c2748608a51e1f9a49273eb3ff58e715700.tar.bz2 pcsx_rearmed-76f71c2748608a51e1f9a49273eb3ff58e715700.zip |
drc: make sure dyna_linker is really called from stub
in very rare cases add_link() would end up being called with jump to
another block and not stub, which would later cause kill_pointer() to
crash while cleaning jump_out. I'm guessing wrong pointer was being
picked from jump_in by dyna_linker, failing to detect stale cache,
and hoping this will fix it.
Diffstat (limited to 'libpcsxcore/new_dynarec/new_dynarec.c')
-rw-r--r-- | libpcsxcore/new_dynarec/new_dynarec.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c index a177d88..74451c7 100644 --- a/libpcsxcore/new_dynarec/new_dynarec.c +++ b/libpcsxcore/new_dynarec/new_dynarec.c @@ -1240,6 +1240,8 @@ void add_link(u_int vaddr,void *src) { u_int page=get_page(vaddr); inv_debug("add_link: %x -> %x (%d)\n",(int)src,vaddr,page); + int *ptr=(int *)(src+4); + assert((*ptr&0x0fff0000)==0x059f0000); ll_add(jump_out+page,vaddr,src); //int ptr=get_pointer(src); //inv_debug("add_link: Pointer is to %x\n",(int)ptr); |