--- ix86/iR3000A.c.old 2009-01-16 00:21:24.000000000 -0800 +++ ix86/iR3000A.c 2009-01-16 00:25:54.000000000 -0800 @@ -23,6 +23,7 @@ #include #include #include +#include #include "PsxCommon.h" #include "ix86.h" @@ -380,10 +381,10 @@ psxRecLUT = (u32*) malloc(0x010000 * 4); - recMem = (char*) malloc(RECMEM_SIZE); + recMem = (char*) mmap(NULL, RECMEM_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); recRAM = (char*) malloc(0x200000); recROM = (char*) malloc(0x080000); - if (recRAM == NULL || recROM == NULL || recMem == NULL || psxRecLUT == NULL) { + if (recRAM == NULL || recROM == NULL || recMem == NULL || recMem == -1 || psxRecLUT == NULL) { SysMessage("Error allocating memory"); return -1; } @@ -412,7 +413,7 @@ static void recShutdown() { if (recMem == NULL) return; free(psxRecLUT); - free(recMem); + munmap(recMem, RECMEM_SIZE); free(recRAM); free(recROM); x86Shutdown();