drc: don't remove unused i/o reads because of FIFOs
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / assem_arm.c
index 83b115d..cd3429f 100644 (file)
@@ -1226,13 +1226,12 @@ void emit_orimm(int rs,int imm,int rt)
 
 void emit_xorimm(int rs,int imm,int rt)
 {
-  assert(imm>0&&imm<65536);
   u_int armval;
   if(genimm(imm,&armval)) {
     assem_debug("eor %s,%s,#%d\n",regname[rt],regname[rs],imm);
     output_w32(0xe2200000|rd_rn_rm(rt,rs,0)|armval);
   }else{
-    assert(imm>0);
+    assert(imm>0&&imm<65536);
     assem_debug("eor %s,%s,#%d\n",regname[rt],regname[rs],imm&0xFF00);
     assem_debug("eor %s,%s,#%d\n",regname[rt],regname[rs],imm&0xFF);
     output_w32(0xe2200000|rd_rn_imm_shift(rt,rs,imm>>8,8));
@@ -2554,6 +2553,11 @@ do_readstub(int n)
     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;