svpdyn: initial buggy iram caching
[picodrive.git] / Pico / carthw / svp / ssp16.c
index 3288ee3..bd03563 100644 (file)
@@ -340,6 +340,9 @@ static int g_cycles;
 static int running = 0;
 static int last_iram = 0;
 #endif
+#ifdef EMBED_INTERPRETER
+static int iram_dirty = 0;
+#endif
 
 // -----------------------------------------------------
 // register i/o handlers
@@ -440,10 +443,13 @@ static u32 pm_io(int reg, int write, u32 d)
                elprintf(EL_SVP, "PM%i (%c) set to %08x @ %04x", reg, write ? 'w' : 'r', rPMC.v, GET_PPC_OFFS());
                ssp->pmac_read[write ? reg + 6 : reg] = rPMC.v;
                ssp->emu_status &= ~SSP_PMC_SET;
-               if ((rPMC.h & 0x7f) == 0x1c && (rPMC.l & 0x7fff) == 0) {
+               if ((rPMC.v & 0x7fffff) == 0x1c8000 || (rPMC.v & 0x7fffff) == 0x1c8240) {
                        elprintf(EL_SVP, "ssp IRAM copy from %06x", (ssp->RAM1[0]-1)<<1);
 #ifdef USE_DEBUGGER
                        last_iram = (ssp->RAM1[0]-1)<<1;
+#endif
+#ifdef EMBED_INTERPRETER
+                       iram_dirty = 1;
 #endif
                }
                return 0;
@@ -878,7 +884,7 @@ static u32 ptr2_read(int op)
 
 // -----------------------------------------------------
 
-#if defined(USE_DEBUGGER) // || defined(EMBED_INTERPRETER)
+#if defined(USE_DEBUGGER) //|| defined(EMBED_INTERPRETER)
 static void debug_dump2file(const char *fname, void *mem, int len)
 {
        FILE *f = fopen(fname, "wb");