X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fpsxmem.c;h=4da0cf4c0190492cc5970a1fabc3b445a94961d1;hp=4373121e2aba71f1696fddd77173e0bea5d2f3bd;hb=4b5b6cf713480df38c7e79d669cb9e72d70b3ba0;hpb=9dd7d179658d34f7943fa0092d172bf4f78d325b diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c index 4373121e..4da0cf4c 100644 --- a/libpcsxcore/psxmem.c +++ b/libpcsxcore/psxmem.c @@ -52,8 +52,9 @@ retry: goto out; } - if (is_fixed) - flags |= MAP_FIXED; + /* avoid MAP_FIXED, it overrides existing mappings.. */ + /* if (is_fixed) + flags |= MAP_FIXED; */ req = (void *)addr; ret = mmap(req, size, PROT_READ | PROT_WRITE, flags, -1, 0); @@ -65,6 +66,11 @@ out: SysMessage("psxMap: warning: wanted to map @%08x, got %p\n", addr, ret); + if (is_fixed) { + psxUnmap(ret, size, tag); + return NULL; + } + if (ret != NULL && ((addr ^ (long)ret) & 0x00ffffff) && !tried_to_align) { @@ -129,8 +135,13 @@ int psxMemInit() { psxM = psxMap(0x80000000, 0x00210000, 1, MAP_TAG_RAM); #ifndef RAM_FIXED +#ifdef __BLACKBERRY_QNX__ + if (psxM == NULL) + psxM = psxMap(0x77000000, 0x00210000, 0, MAP_TAG_RAM); +#else if (psxM == NULL) psxM = psxMap(0x78000000, 0x00210000, 0, MAP_TAG_RAM); +#endif #endif if (psxM == NULL) { SysMessage(_("mapping main RAM failed")); @@ -198,7 +209,7 @@ void psxMemReset() { void psxMemShutdown() { psxUnmap(psxM, 0x00210000, MAP_TAG_RAM); - psxUnmap(psxH, 0x1f800000, MAP_TAG_OTHER); + psxUnmap(psxH, 0x10000, MAP_TAG_OTHER); psxUnmap(psxR, 0x80000, MAP_TAG_OTHER); free(psxMemRLUT);