#include "types.h" #include "sh4_interrupts.h" #include "sh4_core.h" #include "sh4_sched.h" #include "oslib/oslib.h" //sh4 scheduler /* register handler request callback at time single fire events only sh4_sched_register(id) sh4_sched_request(id, in_cycles) sh4_sched_now() */ u64 sh4_sched_ffb; u32 sh4_sched_intr; struct sched_list { sh4_sched_callback* cb; int tag; int start; int end; }; vector list; int sh4_sched_next_id=-1; u32 sh4_sched_remaining(int id) { if (list[id].end!=-1) { return list[id].end-sh4_sched_now(); } else { return -1; } } void sh4_sched_ffts() { u32 diff=-1; int slot=-1; for (size_t i=0;i0) sh4_sched_request(id,re_sch-jitter); } void sh4_sched_tick(int cycles) { /* Sh4cntx.sh4_sched_time+=cycles; Sh4cntx.sh4_sched_next-=cycles; */ if (Sh4cntx.sh4_sched_next<0) { u32 fztime=sh4_sched_now()-cycles; sh4_sched_intr++; if (sh4_sched_next_id!=-1) { for (int i=0;i