fix irq status
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / pcsxmem.c
index f98ae22..a42852a 100644 (file)
@@ -6,11 +6,11 @@
  */
 
 #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"
 
@@ -34,7 +34,7 @@ static void map_item(u32 *out, const void *h, u32 flag)
 {
        u32 hv = (u32)h;
        if (hv & 1) {
-               fprintf(stderr, "FATAL: %p has LSB set\n", h);
+               SysPrintf("FATAL: %p has LSB set\n", h);
                abort();
        }
        *out = (hv >> 1) | (flag << 31);
@@ -147,9 +147,9 @@ make_rcnt_funcs(2)
 
 static void io_write_ireg16(u32 value)
 {
-       if (Config.Sio) psxHu16ref(0x1070) |= 0x80;
+       //if (Config.Sio) psxHu16ref(0x1070) |= 0x80;
        if (Config.SpuIrq) psxHu16ref(0x1070) |= 0x200;
-       psxHu16ref(0x1070) &= psxHu16(0x1074) & value;
+       psxHu16ref(0x1070) &= value;
 }
 
 static void io_write_imask16(u32 value)
@@ -161,9 +161,9 @@ static void io_write_imask16(u32 value)
 
 static void io_write_ireg32(u32 value)
 {
-       if (Config.Sio) psxHu32ref(0x1070) |= 0x80;
+       //if (Config.Sio) psxHu32ref(0x1070) |= 0x80;
        if (Config.SpuIrq) psxHu32ref(0x1070) |= 0x200;
-       psxHu32ref(0x1070) &= psxHu32(0x1074) & value;
+       psxHu32ref(0x1070) &= value;
 }
 
 static void io_write_imask32(u32 value)
@@ -300,17 +300,10 @@ void new_dyna_pcsx_mem_init(void)
 {
        int i;
 
-#ifdef CUSTOM_MEMMAPS
-       // WIZ lack-of-RAM hack
-       extern void *memtab_mmap(void *addr, size_t size);
-       mem_readtab = memtab_mmap((void *)0x08000000, 0x200000 * 4);
-#else
        // 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);
-#endif
-       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;
@@ -482,3 +475,9 @@ void new_dyna_pcsx_mem_reset(void)
 
        map_item(&mem_iowtab[IOMEM32(0x1810)], GPU_writeData, 1);
 }
+
+void new_dyna_pcsx_mem_shutdown(void)
+{
+       psxUnmap(mem_readtab, 0x200000 * 4, MAP_TAG_LUTS);
+       mem_writetab = mem_readtab = NULL;
+}