X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Fassem_arm.c;h=33ecf8e10d7fdc01e793d0d120d87d248ede7162;hp=0c668d3688297ab9ed6815161b45400a52328e81;hb=f968d35dc0302f3fb7fba5a1bafb5feed1f758f6;hpb=b17618c006c1a79ea0aa38c5e452a384f7f2bc95 diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c index 0c668d36..33ecf8e1 100644 --- a/libpcsxcore/new_dynarec/assem_arm.c +++ b/libpcsxcore/new_dynarec/assem_arm.c @@ -186,11 +186,15 @@ void *kill_pointer(void *stub) return i_ptr; } +// find where external branch is liked to using addr of it's stub: +// get address that insn one after stub loads (dyna_linker arg1), +// treat it as a pointer to branch insn, +// return addr where that branch jumps to int get_pointer(void *stub) { //printf("get_pointer(%x)\n",(int)stub); int *ptr=(int *)(stub+4); - assert((*ptr&0x0ff00000)==0x05900000); + assert((*ptr&0x0fff0000)==0x059f0000); u_int offset=*ptr&0xfff; int **l_ptr=(void *)ptr+offset+8; int *i_ptr=*l_ptr;