-# 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
+# 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