aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/new_dynarec.c
diff options
context:
space:
mode:
authornotaz2011-02-16 23:52:36 +0200
committernotaz2011-02-17 17:04:50 +0200
commit3eaa704818ac8d59d31ff362d99a673ee7118641 (patch)
tree165780fadc856444adc66e1d13e8ea737cb47bb2 /libpcsxcore/new_dynarec/new_dynarec.c
parente1190b870e095e6cf1f56b0fa7915e975a7c94d7 (diff)
downloadpcsx_rearmed-3eaa704818ac8d59d31ff362d99a673ee7118641.tar.gz
pcsx_rearmed-3eaa704818ac8d59d31ff362d99a673ee7118641.tar.bz2
pcsx_rearmed-3eaa704818ac8d59d31ff362d99a673ee7118641.zip
drc: merge Ari64's patch: 10_unnecessary_invalidate
also adjust memhandlers to do inv checks as recompiler no longer does them for unknown writes.
Diffstat (limited to 'libpcsxcore/new_dynarec/new_dynarec.c')
-rw-r--r--libpcsxcore/new_dynarec/new_dynarec.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/libpcsxcore/new_dynarec/new_dynarec.c b/libpcsxcore/new_dynarec/new_dynarec.c
index 4fb5db9..84b4400 100644
--- a/libpcsxcore/new_dynarec/new_dynarec.c
+++ b/libpcsxcore/new_dynarec/new_dynarec.c
@@ -3184,14 +3184,6 @@ void store_assemble(int i,struct regstat *i_regs)
}
type=STORED_STUB;
}
- if(!using_tlb&&(!c||memtarget))
- // addr could be a temp, make sure it survives STORE*_STUB
- reglist|=1<<addr;
- if(jaddr) {
- add_stub(type,jaddr,(int)out,i,addr,(int)i_regs,ccadj[i],reglist);
- } else if(!memtarget) {
- inline_writestub(type,i,constmap[i][s]+offset,i_regs->regmap,rs2[i],ccadj[i],reglist);
- }
if(!using_tlb) {
if(!c||memtarget) {
#ifdef DESTRUCTIVE_SHIFT
@@ -3211,6 +3203,11 @@ void store_assemble(int i,struct regstat *i_regs)
add_stub(INVCODE_STUB,jaddr2,(int)out,reglist|(1<<HOST_CCREG),addr,0,0,0);
}
}
+ if(jaddr) {
+ add_stub(type,jaddr,(int)out,i,addr,(int)i_regs,ccadj[i],reglist);
+ } else if(c&&!memtarget) {
+ inline_writestub(type,i,constmap[i][s]+offset,i_regs->regmap,rs2[i],ccadj[i],reglist);
+ }
//if(opcode[i]==0x2B || opcode[i]==0x3F)
//if(opcode[i]==0x2B || opcode[i]==0x28)
//if(opcode[i]==0x2B || opcode[i]==0x29)