mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-08 16:01:42 +12:00
spu: Fix interrupt jump check - also change interrupt variable to atomic bool for ease of setting/checking
This commit is contained in:
parent
34e01ba3d8
commit
d17093e65b
6 changed files with 15 additions and 14 deletions
|
@ -292,6 +292,7 @@ void SPUThread::cpu_init()
|
|||
|
||||
ch_event_mask = 0;
|
||||
ch_event_stat = 0;
|
||||
interrupts_enabled = false;
|
||||
raddr = 0;
|
||||
|
||||
ch_dec_start_timestamp = get_timebased_time(); // ???
|
||||
|
@ -974,12 +975,11 @@ void SPUThread::set_interrupt_status(bool enable)
|
|||
{
|
||||
fmt::throw_exception("SPU Interrupts not implemented (mask=0x%x)" HERE, mask);
|
||||
}
|
||||
|
||||
ch_event_stat |= SPU_EVENT_INTR_ENABLED;
|
||||
interrupts_enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ch_event_stat &= ~SPU_EVENT_INTR_ENABLED;
|
||||
interrupts_enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1165,7 +1165,7 @@ bool SPUThread::get_ch_value(u32 ch, u32& out)
|
|||
{
|
||||
// HACK: "Not isolated" status
|
||||
// Return SPU Interrupt status in LSB
|
||||
out = (ch_event_stat & SPU_EVENT_INTR_ENABLED) != 0;
|
||||
out = interrupts_enabled == true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1467,7 +1467,7 @@ bool SPUThread::set_ch_value(u32 ch, u32 value)
|
|||
case SPU_WrEventMask:
|
||||
{
|
||||
// detect masking events with enabled interrupt status
|
||||
if (value & ~SPU_EVENT_INTR_IMPLEMENTED && ch_event_stat & SPU_EVENT_INTR_ENABLED)
|
||||
if (value & ~SPU_EVENT_INTR_IMPLEMENTED && interrupts_enabled)
|
||||
{
|
||||
fmt::throw_exception("SPU Interrupts not implemented (mask=0x%x)" HERE, value);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue