drc: don't clear ARM caches on whole translation cache - it's very slow
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / assem_arm.c
index 3abef7f..264f9d6 100644 (file)
@@ -142,7 +142,7 @@ add_literal(int addr,int val)
   literalcount++; 
 } 
 
   literalcount++; 
 } 
 
-void kill_pointer(void *stub)
+void *kill_pointer(void *stub)
 {
   int *ptr=(int *)(stub+4);
   assert((*ptr&0x0ff00000)==0x05900000);
 {
   int *ptr=(int *)(stub+4);
   assert((*ptr&0x0ff00000)==0x05900000);
@@ -150,6 +150,7 @@ void kill_pointer(void *stub)
   int **l_ptr=(void *)ptr+offset+8;
   int *i_ptr=*l_ptr;
   set_jump_target((int)i_ptr,(int)stub);
   int **l_ptr=(void *)ptr+offset+8;
   int *i_ptr=*l_ptr;
   set_jump_target((int)i_ptr,(int)stub);
+  return i_ptr;
 }
 
 int get_pointer(void *stub)
 }
 
 int get_pointer(void *stub)
@@ -2553,6 +2554,11 @@ do_readstub(int n)
     rth=get_reg(i_regmap,rt1[i]|64);
     rt=get_reg(i_regmap,rt1[i]);
   }
     rth=get_reg(i_regmap,rt1[i]|64);
     rt=get_reg(i_regmap,rt1[i]);
   }
+#ifdef PCSX
+  if(rt<0)
+    // assume forced dummy read
+    rt=get_reg(i_regmap,-1);
+#endif
   assert(rs>=0);
   assert(rt>=0);
   if(addr<0) addr=rt;
   assert(rs>=0);
   assert(rt>=0);
   if(addr<0) addr=rt;