-# define ash2_end_run(after) { \\r
- if ((sh2->sr >> 12) > (after)) \\r
- { sh2->sr &= 0xfff; sh2->sr |= (after) << 12; } \\r
-}\r
+# define ash2_end_run(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