spu: rework synchronization
[pcsx_rearmed.git] / libpcsxcore / new_dynarec / emu_if.c
index b8e9883..89e2bd6 100644 (file)
@@ -25,6 +25,7 @@
 #define evprintf(...)
 
 char invalid_code[0x100000];
+static u32 scratch_buf[8*8*2] __attribute__((aligned(64)));
 u32 event_cycles[PSXINT_COUNT];
 
 static void schedule_timeslice(void)
@@ -59,6 +60,7 @@ static irq_func * const irq_funcs[] = {
        [PSXINT_CDRDMA] = cdrDmaInterrupt,
        [PSXINT_CDRLID] = cdrLidSeekInterrupt,
        [PSXINT_CDRPLAY] = cdrPlayInterrupt,
+       [PSXINT_SPU_UPDATE] = spuUpdate,
        [PSXINT_RCNT] = psxRcntUpdate,
 };
 
@@ -259,6 +261,7 @@ static int ari64_init()
 {
        extern void (*psxCP2[64])();
        extern void psxNULL();
+       extern u_char *out;
        size_t i;
 
        new_dynarec_init();
@@ -286,6 +289,11 @@ static int ari64_init()
 #endif
        psxH_ptr = psxH;
        zeromem_ptr = zero_mem;
+       scratch_buf_ptr = scratch_buf;
+
+       SysPrintf("Mapped (RAM/scrp/ROM/LUTs/TC):\n");
+       SysPrintf("%08x/%08x/%08x/%08x/%08x\n",
+               psxM, psxH, psxR, mem_rtab, out);
 
        return 0;
 }
@@ -344,6 +352,7 @@ static void ari64_clear(u32 addr, u32 size)
 static void ari64_shutdown()
 {
        new_dynarec_cleanup();
+       new_dyna_pcsx_mem_shutdown();
 }
 
 extern void intExecute();
@@ -385,6 +394,9 @@ int new_dynarec_hacks;
 void *psxH_ptr;
 void *zeromem_ptr;
 u8 zero_mem[0x1000];
+u_char *out;
+void *mem_rtab;
+void *scratch_buf_ptr;
 void new_dynarec_init() { (void)ari64_execute; }
 void new_dyna_start() {}
 void new_dynarec_cleanup() {}
@@ -394,6 +406,7 @@ void invalidate_block(unsigned int block) {}
 void new_dyna_pcsx_mem_init(void) {}
 void new_dyna_pcsx_mem_reset(void) {}
 void new_dyna_pcsx_mem_load_state(void) {}
+void new_dyna_pcsx_mem_shutdown(void) {}
 #endif
 
 #ifdef DRC_DBG