Skip to content

Commit

Permalink
SPU: Optimize cellSpurs reservations
Browse files Browse the repository at this point in the history
  • Loading branch information
elad335 committed Oct 11, 2024
1 parent 8fac136 commit a5838fd
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion rpcs3/Emu/Cell/SPUThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3899,7 +3899,23 @@ bool spu_thread::do_putllc(const spu_mfc_cmd& args)
{
if (raddr)
{
vm::reservation_notifier_notify(addr);
if (raddr != spurs_addr || pc != 0x11e4)
{
vm::reservation_notifier_notify(addr);
}
else
{
const u32 thread_bit_mask = (1u << index);
constexpr usz SPU_IDLE = 0x73;

const bool switched_from_running_to_idle = (static_cast<u8>(rdata[SPU_IDLE]) & thread_bit_mask) == 0 && (_ref<u8>(0x100 + SPU_IDLE) & thread_bit_mask) != 0;

if (switched_from_running_to_idle)
{
vm::reservation_notifier_notify(addr);
}
}

raddr = 0;
}

Expand Down

0 comments on commit a5838fd

Please sign in to comment.