notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
hack interpreter so that it can return to menu
[pcsx_rearmed.git]
/
libpcsxcore
/
new_dynarec
/
assem_arm.c
diff --git
a/libpcsxcore/new_dynarec/assem_arm.c
b/libpcsxcore/new_dynarec/assem_arm.c
index
633eeac
..
515f7c4
100644
(file)
--- a/
libpcsxcore/new_dynarec/assem_arm.c
+++ b/
libpcsxcore/new_dynarec/assem_arm.c
@@
-2912,7
+2912,7
@@
do_unalignedwritestub(int n)
#endif
emit_xorimm(temp,24,temp);
emit_movimm(-1,HOST_TEMPREG);
#endif
emit_xorimm(temp,24,temp);
emit_movimm(-1,HOST_TEMPREG);
- if (opcode[i]==0x2
e) { // SWR
+ if (opcode[i]==0x2
a) { // SWL
emit_bic_lsr(temp2,HOST_TEMPREG,temp,temp2);
emit_orrshr(rt,temp,temp2);
}else{
emit_bic_lsr(temp2,HOST_TEMPREG,temp,temp2);
emit_orrshr(rt,temp,temp2);
}else{
@@
-2959,15
+2959,19
@@
do_invstub(int n)
int do_dirty_stub(int i)
{
assem_debug("do_dirty_stub %x\n",start+i*4);
int do_dirty_stub(int i)
{
assem_debug("do_dirty_stub %x\n",start+i*4);
+ u_int addr=(int)start<(int)0xC0000000?(u_int)source:(u_int)start;
+ #ifdef PCSX
+ addr=(u_int)source;
+ #endif
// Careful about the code output here, verify_dirty needs to parse it.
#ifdef ARMv5_ONLY
// Careful about the code output here, verify_dirty needs to parse it.
#ifdef ARMv5_ONLY
- emit_loadlp(
(int)start<(int)0xC0000000?(int)source:(int)start
,1);
+ emit_loadlp(
addr
,1);
emit_loadlp((int)copy,2);
emit_loadlp(slen*4,3);
#else
emit_loadlp((int)copy,2);
emit_loadlp(slen*4,3);
#else
- emit_movw(
((int)start<(int)0xC0000000?(u_int)source:(u_int)start)
&0x0000FFFF,1);
+ emit_movw(
addr
&0x0000FFFF,1);
emit_movw(((u_int)copy)&0x0000FFFF,2);
emit_movw(((u_int)copy)&0x0000FFFF,2);
- emit_movt(
((int)start<(int)0xC0000000?(u_int)source:(u_int)start)
&0xFFFF0000,1);
+ emit_movt(
addr
&0xFFFF0000,1);
emit_movt(((u_int)copy)&0xFFFF0000,2);
emit_movw(slen*4,3);
#endif
emit_movt(((u_int)copy)&0xFFFF0000,2);
emit_movw(slen*4,3);
#endif
@@
-3238,7
+3242,7
@@
void loadlr_assemble_arm(int i,struct regstat *i_regs)
else addr=s;
if(s>=0) {
c=(i_regs->wasconst>>s)&1;
else addr=s;
if(s>=0) {
c=(i_regs->wasconst>>s)&1;
- memtarget=((signed int)(constmap[i][s]+offset))<(signed int)0x80
800000
;
+ memtarget=((signed int)(constmap[i][s]+offset))<(signed int)0x80
000000+RAM_SIZE
;
if(using_tlb&&((signed int)(constmap[i][s]+offset))>=(signed int)0xC0000000) memtarget=1;
}
if(tl>=0) {
if(using_tlb&&((signed int)(constmap[i][s]+offset))>=(signed int)0xC0000000) memtarget=1;
}
if(tl>=0) {
@@
-3252,7
+3256,7
@@
void loadlr_assemble_arm(int i,struct regstat *i_regs)
}else{
emit_andimm(addr,0xFFFFFFF8,temp2); // LDL/LDR
}
}else{
emit_andimm(addr,0xFFFFFFF8,temp2); // LDL/LDR
}
- emit_cmpimm(addr,
0x800000
);
+ emit_cmpimm(addr,
RAM_SIZE
);
jaddr=(int)out;
emit_jno(0);
}
jaddr=(int)out;
emit_jno(0);
}