X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=libpcsxcore%2Fnew_dynarec%2Fnew_dynarec.c;h=573d0cdbfaf2f2b5f5d812b4ec01452a8a9f1ff8;hb=748406cf9b74d0cd0537768d68cbae926394ea5b;hp=893f258c774246a261576ad4283fd4c4dded3466;hpb=b1570849e812cc98973c2efc0bee1e494fa39367;p=pcsx_rearmed.git diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c index 893f258c..573d0cdb 100644 --- a/libpcsxcore/new_dynarec/new_dynarec.c +++ b/libpcsxcore/new_dynarec/new_dynarec.c @@ -690,6 +690,10 @@ void lsn(u_char hsn[], int i, int *preferred_reg) hsn[RHASH]=1; hsn[RHTBL]=1; } + // due to the way JAL is currently done we need DS not to evict $ra + if(i>0&&itype[i-1]==UJUMP&&rt1[i-1]==31) { + hsn[31]=0; + } // Coprocessor load/store needs FTEMP, even if not declared if(itype[i]==C1LS||itype[i]==C2LS) { hsn[FTEMP]=0; @@ -8881,8 +8885,6 @@ int new_recompile_block(int addr) clear_const(¤t,rt1[i]); alloc_cc(¤t,i); dirty_reg(¤t,CCREG); - ooo[i]=1; - delayslot_alloc(¤t,i+1); if (rt1[i]==31) { alloc_reg(¤t,i,31); dirty_reg(¤t,31); @@ -8893,6 +8895,8 @@ int new_recompile_block(int addr) #endif //current.is32|=1LL<