X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fnew_dynarec%2Fassem_arm.c;h=696509f5be924e2292cb9dc0b0f1ae80e0a942e6;hb=96d9fde1230e5ae6de069ff9e4a0f16185650ab5;hp=633eeac293d342bbe79e156cc445e3b737326ae4;hpb=b79187510fbbf5f73daa13a5c57cc70d09d16acb;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c index 633eeac2..696509f5 100644 --- a/libpcsxcore/new_dynarec/assem_arm.c +++ b/libpcsxcore/new_dynarec/assem_arm.c @@ -2959,15 +2959,19 @@ do_invstub(int n) int do_dirty_stub(int i) { assem_debug("do_dirty_stub %x\n",start+i*4); + u_int addr=(int)start<(int)0xC0000000?(u_int)source:(u_int)start; + #ifdef PCSX + addr=(u_int)source; + #endif // Careful about the code output here, verify_dirty needs to parse it. #ifdef ARMv5_ONLY - emit_loadlp((int)start<(int)0xC0000000?(int)source:(int)start,1); + emit_loadlp(addr,1); emit_loadlp((int)copy,2); emit_loadlp(slen*4,3); #else - emit_movw(((int)start<(int)0xC0000000?(u_int)source:(u_int)start)&0x0000FFFF,1); + emit_movw(addr&0x0000FFFF,1); emit_movw(((u_int)copy)&0x0000FFFF,2); - emit_movt(((int)start<(int)0xC0000000?(u_int)source:(u_int)start)&0xFFFF0000,1); + emit_movt(addr&0xFFFF0000,1); emit_movt(((u_int)copy)&0xFFFF0000,2); emit_movw(slen*4,3); #endif @@ -3238,7 +3242,7 @@ void loadlr_assemble_arm(int i,struct regstat *i_regs) else addr=s; if(s>=0) { c=(i_regs->wasconst>>s)&1; - memtarget=((signed int)(constmap[i][s]+offset))<(signed int)0x80800000; + memtarget=((signed int)(constmap[i][s]+offset))<(signed int)0x80000000+RAM_SIZE; if(using_tlb&&((signed int)(constmap[i][s]+offset))>=(signed int)0xC0000000) memtarget=1; } if(tl>=0) { @@ -3252,7 +3256,7 @@ void loadlr_assemble_arm(int i,struct regstat *i_regs) }else{ emit_andimm(addr,0xFFFFFFF8,temp2); // LDL/LDR } - emit_cmpimm(addr,0x800000); + emit_cmpimm(addr,RAM_SIZE); jaddr=(int)out; emit_jno(0); }