Make Scheduler a singleton

This commit is contained in:
irisz64
2025-07-28 13:44:13 +02:00
parent 9dec9c03b4
commit ad9814bb3c
6 changed files with 14 additions and 12 deletions

View File

@@ -14,6 +14,7 @@ Mem::Mem(Registers &regs, ParallelRDP &parallel, JIT *jit) : mmio(*this, regs, p
void Mem::Reset() {
std::ranges::fill(rom.cart, 0);
std::ranges::fill(isviewer, 0);
flash.Reset();
if (saveData.is_mapped()) {
std::error_code error;

View File

@@ -31,7 +31,7 @@ bool PI::WriteLatch(u32 value) {
} else {
ioBusy = true;
latch = value;
scheduler.EnqueueRelative(100, PI_BUS_WRITE_COMPLETE);
Scheduler::GetInstance().EnqueueRelative(100, PI_BUS_WRITE_COMPLETE);
return true;
}
}
@@ -39,7 +39,7 @@ bool PI::WriteLatch(u32 value) {
bool PI::ReadLatch() {
if (ioBusy) [[unlikely]] {
ioBusy = false;
regs.CpuStall(scheduler.Remove(PI_BUS_WRITE_COMPLETE));
regs.CpuStall(Scheduler::GetInstance().Remove(PI_BUS_WRITE_COMPLETE));
return false;
}
return true;
@@ -506,7 +506,7 @@ void PI::DMA<false>() {
cartAddr += 1;
dmaBusy = true;
scheduler.EnqueueRelative(AccessTiming(GetDomain(cartAddr), rdLen), PI_DMA_COMPLETE);
Scheduler::GetInstance().EnqueueRelative(AccessTiming(GetDomain(cartAddr), rdLen), PI_DMA_COMPLETE);
}
// cart -> rdram
@@ -529,7 +529,7 @@ void PI::DMA<true>() {
cartAddr += 1;
dmaBusy = true;
scheduler.EnqueueRelative(AccessTiming(GetDomain(cartAddr), len), PI_DMA_COMPLETE);
Scheduler::GetInstance().EnqueueRelative(AccessTiming(GetDomain(cartAddr), len), PI_DMA_COMPLETE);
}
void PI::Write(u32 addr, u32 val) {

View File

@@ -73,13 +73,13 @@ void SI::Write(u32 addr, u32 val) {
pifAddr = val & 0x1FFFFFFF;
status.dmaBusy = true;
toDram = true;
scheduler.EnqueueRelative(SI_DMA_DELAY, SI_DMA);
Scheduler::GetInstance().EnqueueRelative(SI_DMA_DELAY, SI_DMA);
break;
case 0x04800010:
pifAddr = val & 0x1FFFFFFF;
status.dmaBusy = true;
toDram = false;
scheduler.EnqueueRelative(SI_DMA_DELAY, SI_DMA);
Scheduler::GetInstance().EnqueueRelative(SI_DMA_DELAY, SI_DMA);
break;
case 0x04800018:
mem.mmio.mi.InterruptLower(MI::Interrupt::SI);