X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cpu%2Fsh2%2Fsh2.h;h=1394f94a98e16d3c03bab700295b2827c20f1e5c;hb=0185b677364b849e1e11f523d9f025d90ce86770;hp=d0b7377c796690b2cbb13f3cd0b8a67a997941a1;hpb=f81107f59093904c3daac2e9c257261fddc6caf0;p=picodrive.git diff --git a/cpu/sh2/sh2.h b/cpu/sh2/sh2.h index d0b7377..1394f94 100644 --- a/cpu/sh2/sh2.h +++ b/cpu/sh2/sh2.h @@ -89,7 +89,23 @@ void sh2_do_irq(SH2 *sh2, int level, int vector); void sh2_pack(const SH2 *sh2, unsigned char *buff); void sh2_unpack(SH2 *sh2, const unsigned char *buff); -int sh2_execute(SH2 *sh2, int cycles); +int sh2_execute_drc(SH2 *sh2c, int cycles); +int sh2_execute_interpreter(SH2 *sh2c, int cycles); + +static inline int sh2_execute(SH2 *sh2, int cycles, int use_drc) +{ + int ret; + + sh2->cycles_timeslice = cycles; +#ifdef DRC_SH2 + if (use_drc) + ret = sh2_execute_drc(sh2, cycles); + else +#endif + ret = sh2_execute_interpreter(sh2, cycles); + + return sh2->cycles_timeslice - ret; +} // regs, pending_int*, cycles, reserved #define SH2_STATE_SIZE ((24 + 2 + 2 + 12) * 4)