mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-25 03:40:37 +00:00
SPU: Disable PUTLLC NOP transfers detection on TSX path
This commit is contained in:
parent
f8dbfa1d1e
commit
84470c34db
@ -1227,7 +1227,7 @@ static bool ppu_store_reservation(ppu_thread& ppu, u32 addr, T reg_value)
|
|||||||
const T old_data = static_cast<T>(ppu.rdata << ((addr & 7) * 8) >> size_off);
|
const T old_data = static_cast<T>(ppu.rdata << ((addr & 7) * 8) >> size_off);
|
||||||
auto& res = vm::reservation_acquire(addr, sizeof(T));
|
auto& res = vm::reservation_acquire(addr, sizeof(T));
|
||||||
|
|
||||||
if (std::exchange(ppu.raddr, 0) != addr || addr % sizeof(T) || old_data != data || ppu.rtime != res)
|
if (std::exchange(ppu.raddr, 0) != addr || addr % sizeof(T) || old_data != data || ppu.rtime != (res & -128))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2021,7 +2021,7 @@ bool spu_thread::process_mfc_cmd()
|
|||||||
if (raddr && raddr != addr)
|
if (raddr && raddr != addr)
|
||||||
{
|
{
|
||||||
// Last check for event before we replace the reservation with a new one
|
// Last check for event before we replace the reservation with a new one
|
||||||
if (vm::reservation_acquire(raddr, 128) != rtime || !cmp_rdata(rdata, vm::_ref<decltype(rdata)>(raddr)))
|
if ((vm::reservation_acquire(raddr, 128) & -128) != rtime || !cmp_rdata(rdata, vm::_ref<decltype(rdata)>(raddr)))
|
||||||
{
|
{
|
||||||
ch_event_stat |= SPU_EVENT_LR;
|
ch_event_stat |= SPU_EVENT_LR;
|
||||||
}
|
}
|
||||||
@ -2063,7 +2063,7 @@ bool spu_thread::process_mfc_cmd()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmp_rdata(to_write, rdata))
|
if (!g_use_rtm && cmp_rdata(to_write, rdata))
|
||||||
{
|
{
|
||||||
// Writeback of unchanged data. Only check memory change
|
// Writeback of unchanged data. Only check memory change
|
||||||
return cmp_rdata(rdata, vm::_ref<decltype(rdata)>(addr)) && res.compare_and_swap_test(rtime, rtime + 128);
|
return cmp_rdata(rdata, vm::_ref<decltype(rdata)>(addr)) && res.compare_and_swap_test(rtime, rtime + 128);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user