aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornotaz2014-12-06 18:26:16 +0200
committernotaz2014-12-06 18:26:16 +0200
commit6d760c926db017bea75bdd95cfa8acc3cc060ab8 (patch)
tree8645360cf3da9fc69a2c819b9217fb5215fa2e1e
parent48f615ba48949d7b6cf7b6765a15f069033a3fdd (diff)
downloadpcsx_rearmed-6d760c926db017bea75bdd95cfa8acc3cc060ab8.tar.gz
pcsx_rearmed-6d760c926db017bea75bdd95cfa8acc3cc060ab8.tar.bz2
pcsx_rearmed-6d760c926db017bea75bdd95cfa8acc3cc060ab8.zip
psxmem: remove hard requirement for a mapping
not all platforms have 1f800000 free not all mmap implementations use the addr hint..
-rw-r--r--libpcsxcore/new_dynarec/assem_arm.c14
-rw-r--r--libpcsxcore/psxmem.c4
2 files changed, 12 insertions, 6 deletions
diff --git a/libpcsxcore/new_dynarec/assem_arm.c b/libpcsxcore/new_dynarec/assem_arm.c
index 45edd65..9ee832e 100644
--- a/libpcsxcore/new_dynarec/assem_arm.c
+++ b/libpcsxcore/new_dynarec/assem_arm.c
@@ -3999,10 +3999,16 @@ static int emit_fastpath_cmp_jump(int i,int addr,int *addr_reg_override)
type=0;
}
else if(type==MTYPE_1F80) { // scratchpad
- emit_addimm(addr,-0x1f800000,HOST_TEMPREG);
- emit_cmpimm(HOST_TEMPREG,0x1000);
- jaddr=(int)out;
- emit_jc(0);
+ if (psxH == (void *)0x1f800000) {
+ emit_addimm(addr,-0x1f800000,HOST_TEMPREG);
+ emit_cmpimm(HOST_TEMPREG,0x1000);
+ jaddr=(int)out;
+ emit_jc(0);
+ }
+ else {
+ // do usual RAM check, jump will go to the right handler
+ type=0;
+ }
}
#endif
diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c
index 2ca5dd5..7001744 100644
--- a/libpcsxcore/psxmem.c
+++ b/libpcsxcore/psxmem.c
@@ -150,11 +150,11 @@ int psxMemInit() {
}
psxP = &psxM[0x200000];
- psxH = psxMap(0x1f800000, 0x10000, 1, MAP_TAG_OTHER);
+ psxH = psxMap(0x1f800000, 0x10000, 0, MAP_TAG_OTHER);
psxR = psxMap(0x1fc00000, 0x80000, 0, MAP_TAG_OTHER);
if (psxMemRLUT == NULL || psxMemWLUT == NULL ||
- psxR == NULL || psxP == NULL || psxH != (void *)0x1f800000) {
+ psxR == NULL || psxP == NULL || psxH == NULL) {
SysMessage(_("Error allocating memory!"));
psxMemShutdown();
return -1;