-#include "cpu/sh2mame/sh2.h"\r
-\r
-SH2 msh2, ssh2;\r
-#define ash2_end_run(after) if (sh2_icount > (after)) sh2_icount = after\r
-#define ash2_cycles_done() (sh2->cycles_aim - sh2_icount)\r
+#include "cpu/sh2/sh2.h"\r
+\r
+extern SH2 sh2s[2];\r
+#define msh2 sh2s[0]\r
+#define ssh2 sh2s[1]\r
+\r
+#ifndef DRC_SH2\r
+# define ash2_end_run(sh2, after) do { \\r
+ if ((sh2)->icount > (after)) { \\r
+ (sh2)->cycles_timeslice -= (sh2)->icount; \\r
+ (sh2)->icount = after; \\r
+ } \\r
+} while (0)\r
+# define ash2_cycles_done(sh2) ((sh2)->cycles_timeslice - (sh2)->icount)\r
+# define sh2_pc(c) (c) ? ssh2.ppc : msh2.ppc\r
+#else\r
+# define ash2_end_run(sh2, after) do { \\r
+ int left = (sh2)->sr >> 12; \\r
+ if (left > (after)) { \\r
+ (sh2)->cycles_timeslice -= left; \\r
+ (sh2)->sr &= 0xfff; \\r
+ (sh2)->sr |= (after) << 12; \\r
+ } \\r
+} while (0)\r
+# define ash2_cycles_done(sh2) ((sh2)->cycles_timeslice - ((sh2)->sr >> 12))\r
+# define sh2_pc(c) (c) ? ssh2.pc : msh2.pc\r
+#endif\r