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
psx_gpu: switch to 1024 width again.
[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
0b7cee8
..
77cfafa
100644
(file)
--- a/
libpcsxcore/new_dynarec/assem_arm.c
+++ b/
libpcsxcore/new_dynarec/assem_arm.c
@@
-29,7
+29,7
@@
#include "pcnt.h"
#endif
#include "pcnt.h"
#endif
-#if
ndef
BASE_ADDR_FIXED
+#if
!
BASE_ADDR_FIXED
char translation_cache[1 << TARGET_SIZE_2] __attribute__((aligned(4096)));
#endif
char translation_cache[1 << TARGET_SIZE_2] __attribute__((aligned(4096)));
#endif
@@
-292,6
+292,7
@@
int isclean(int addr)
return 1;
}
return 1;
}
+// get source that block at addr was compiled from (host pointers)
void get_bounds(int addr,u_int *start,u_int *end)
{
u_int *ptr=(u_int *)addr;
void get_bounds(int addr,u_int *start,u_int *end)
{
u_int *ptr=(u_int *)addr;
@@
-2701,7
+2702,7
@@
void literal_pool_jumpover(int n)
set_jump_target(jaddr,(int)out);
}
set_jump_target(jaddr,(int)out);
}
-emit_extjump2(int addr, int target, int linker)
+emit_extjump2(
u_
int addr, int target, int linker)
{
u_char *ptr=(u_char *)addr;
assert((ptr[3]&0x0e)==0xa);
{
u_char *ptr=(u_char *)addr;
assert((ptr[3]&0x0e)==0xa);
@@
-4001,6
+4002,10
@@
static int emit_fastpath_cmp_jump(int i,int addr,int *addr_reg_override)
else
#endif
emit_jno(0);
else
#endif
emit_jno(0);
+ if(ram_offset!=0) {
+ emit_addimm(addr,ram_offset,HOST_TEMPREG);
+ addr=*addr_reg_override=HOST_TEMPREG;
+ }
}
return jaddr;
}
return jaddr;
@@
-4052,6
+4057,10
@@
void loadlr_assemble_arm(int i,struct regstat *i_regs)
jaddr=emit_fastpath_cmp_jump(i,temp2,&fastload_reg_override);
}
else {
jaddr=emit_fastpath_cmp_jump(i,temp2,&fastload_reg_override);
}
else {
+ if(ram_offset&&memtarget) {
+ emit_addimm(temp2,ram_offset,HOST_TEMPREG);
+ fastload_reg_override=HOST_TEMPREG;
+ }
if (opcode[i]==0x22||opcode[i]==0x26) {
emit_movimm(((constmap[i][s]+offset)<<3)&24,temp); // LWL/LWR
}else{
if (opcode[i]==0x22||opcode[i]==0x26) {
emit_movimm(((constmap[i][s]+offset)<<3)&24,temp); // LWL/LWR
}else{