literalcount++;
}
-void kill_pointer(void *stub)
+void *kill_pointer(void *stub)
{
int *ptr=(int *)(stub+4);
assert((*ptr&0x0ff00000)==0x05900000);
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)
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));
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;