pipe error messages through single function
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / pcsxmem.c
index 0464021..90f7765 100644 (file)
@@ -6,14 +6,19 @@
  */
 
 #include <stdio.h>
-#include <sys/mman.h>
 #include "../psxhw.h"
 #include "../cdrom.h"
 #include "../mdec.h"
 #include "../gpu.h"
+#include "../psxmem_map.h"
 #include "emu_if.h"
 #include "pcsxmem.h"
 
+#ifdef __thumb__
+#error the dynarec is incompatible with Thumb functions,
+#error please add -marm to compile flags
+#endif
+
 //#define memprintf printf
 #define memprintf(...)
 
@@ -28,8 +33,10 @@ static u32 mem_unmwtab[(1+2+4) * 0x1000 / 4];
 static void map_item(u32 *out, const void *h, u32 flag)
 {
        u32 hv = (u32)h;
-       if (hv & 1)
-               fprintf(stderr, "%p has LSB set\n", h);
+       if (hv & 1) {
+               SysPrintf("FATAL: %p has LSB set\n", h);
+               abort();
+       }
        *out = (hv >> 1) | (flag << 31);
 }
 
@@ -294,10 +301,9 @@ void new_dyna_pcsx_mem_init(void)
        int i;
 
        // have to map these further to keep tcache close to .text
-       mem_readtab = mmap((void *)0x08000000, 0x200000 * 4, PROT_READ | PROT_WRITE,
-               MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-       if (mem_readtab == MAP_FAILED) {
-               fprintf(stderr, "failed to map mem tables\n");
+       mem_readtab = psxMap(0x08000000, 0x200000 * 4, 0, MAP_TAG_LUTS);
+       if (mem_readtab == NULL) {
+               SysPrintf("failed to map mem tables\n");
                exit(1);
        }
        mem_writetab = mem_readtab + 0x100000;