drc: fix $ra evicting on JAL
authornotaz <notasas@gmail.com>
Sun, 18 Sep 2011 16:45:38 +0000 (19:45 +0300)
committernotaz <notasas@gmail.com>
Mon, 19 Sep 2011 16:01:47 +0000 (19:01 +0300)
hopefully for good this time

libpcsxcore/new_dynarec/new_dynarec.c

index 05c54ee..573d0cd 100644 (file)
@@ -690,6 +690,10 @@ void lsn(u_char hsn[], int i, int *preferred_reg)
     hsn[RHASH]=1;
     hsn[RHTBL]=1;
   }
     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;
   // Coprocessor load/store needs FTEMP, even if not declared
   if(itype[i]==C1LS||itype[i]==C2LS) {
     hsn[FTEMP]=0;