32x: interpreter-wrap drc works (demos only). SVP drc refactoring.
[picodrive.git] / pico / pico_int.h
index 0617397..90731bd 100644 (file)
@@ -243,10 +243,19 @@ extern SH2 sh2s[2];
 #define msh2 sh2s[0]\r
 #define ssh2 sh2s[1]\r
 \r
-#define ash2_end_run(after) if (sh2->icount > (after)) sh2->icount = after\r
-#define ash2_cycles_done() (sh2->cycles_aim - sh2->icount)\r
+#ifndef DRC_SH2\r
+# define ash2_end_run(after) if (sh2->icount > (after)) sh2->icount = after\r
+# define ash2_cycles_done() (sh2->cycles_aim - sh2->icount)\r
+#else\r
+# define ash2_end_run(after) { \\r
+   if ((sh2->sr >> 12) > (after)) \\r
+     { sh2->sr &= 0xfff; sh2->sr |= (after) << 12; } \\r
+}\r
+# define ash2_cycles_done() (sh2->cycles_aim - (sh2->sr >> 12))\r
+#endif\r
 \r
-#define sh2_pc(c)     (c) ? ssh2.ppc : msh2.ppc\r
+//#define sh2_pc(c)     (c) ? ssh2.ppc : msh2.ppc\r
+#define sh2_pc(c)     (c) ? ssh2.pc : msh2.pc\r
 #define sh2_reg(c, x) (c) ? ssh2.r[x] : msh2.r[x]\r
 #define sh2_gbr(c)    (c) ? ssh2.gbr : msh2.gbr\r
 #define sh2_vbr(c)    (c) ? ssh2.vbr : msh2.vbr\r