From dc39a9b84f102a03b195b73d2fe99758ad7dd98d Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 13 Oct 2020 00:12:01 +0300 Subject: [PATCH] SPU: Report 'GETLLAR took too long' Also move similar code in PPU. --- rpcs3/Emu/Cell/PPUThread.cpp | 10 +++++----- rpcs3/Emu/Cell/SPUThread.cpp | 5 +++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 63a36ad4b8..32feddbbf8 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -1194,11 +1194,6 @@ static T ppu_load_acquire_reservation(ppu_thread& ppu, u32 addr) if (vm::reservation_acquire(addr, sizeof(T)) == ppu.rtime) [[likely]] { - if (count >= 15) [[unlikely]] - { - ppu_log.warning("%s took too long: %u", sizeof(T) == 4 ? "LWARX" : "LDARX", count); - } - if (!ppu.use_full_rdata) { if (ppu.rtime & vm::rsrv_shared_mask) @@ -1222,6 +1217,11 @@ static T ppu_load_acquire_reservation(ppu_thread& ppu, u32 addr) std::memcpy(&rdata, &ppu.rdata[addr & 0x78], 8); } + if (count >= 15) [[unlikely]] + { + ppu_log.warning("%s took too long: %u", sizeof(T) == 4 ? "LWARX" : "LDARX", count); + } + return static_cast(rdata << data_off >> size_off); } } diff --git a/rpcs3/Emu/Cell/SPUThread.cpp b/rpcs3/Emu/Cell/SPUThread.cpp index 2d82278336..612cd54496 100644 --- a/rpcs3/Emu/Cell/SPUThread.cpp +++ b/rpcs3/Emu/Cell/SPUThread.cpp @@ -2352,6 +2352,11 @@ bool spu_thread::process_mfc_cmd() continue; } + if (i >= 25) [[unlikely]] + { + spu_log.warning("GETLLAR took too long: %u", i); + } + break; }