aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authornotaz2011-10-16 03:21:23 +0300
committernotaz2011-10-16 03:24:58 +0300
commit6e1a0c4dc569a9635344e42e2f9e973f0b9ab6d5 (patch)
tree886e4dbe874a806bc9e4e7f4e8e5df8820bdb474 /libpcsxcore
parentcbd45cda748f1aaf46ecb665a9d10177da688e88 (diff)
downloadpcsx_rearmed-6e1a0c4dc569a9635344e42e2f9e973f0b9ab6d5.tar.gz
pcsx_rearmed-6e1a0c4dc569a9635344e42e2f9e973f0b9ab6d5.tar.bz2
pcsx_rearmed-6e1a0c4dc569a9635344e42e2f9e973f0b9ab6d5.zip
psxmem: set fixed flag on mappings that really need it
also fix unmap
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/psxmem.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libpcsxcore/psxmem.c b/libpcsxcore/psxmem.c
index f0a8841..498246c 100644
--- a/libpcsxcore/psxmem.c
+++ b/libpcsxcore/psxmem.c
@@ -69,17 +69,17 @@ int psxMemInit() {
memset(psxMemWLUT, 0, 0x10000 * sizeof(void *));
psxM = mmap((void *)0x80000000, 0x00210000,
- PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
psxP = &psxM[0x200000];
psxH = mmap((void *)0x1f800000, 0x00010000,
- PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
- psxR = mmap((void *)0x9fc00000, 0x80000,
+ psxR = mmap((void *)0x1fc00000, 0x80000,
PROT_WRITE | PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (psxMemRLUT == NULL || psxMemWLUT == NULL ||
- psxM != (void *)0x80000000 || psxR != (void *)0x9fc00000 ||
+ psxM != (void *)0x80000000 || psxR == MAP_FAILED ||
psxP == NULL || psxH != (void *)0x1f800000) {
SysMessage(_("Error allocating memory!"));
return -1;
@@ -135,7 +135,8 @@ void psxMemReset() {
}
void psxMemShutdown() {
- munmap(psxM, 0x00220000);
+ munmap(psxM, 0x00210000);
+ munmap(psxH, 0x1f800000);
munmap(psxR, 0x80000);
free(psxMemRLUT);