From ac79654d1b8da4f5806dda5ac9646a8c6487a17b Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 8 Apr 2017 00:55:19 +0300 Subject: [PATCH] Warn about libfiber.sprx It's currently incompatible with LLVM Also fixed breakpoint bug --- rpcs3/Emu/Cell/PPUThread.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 5697ab8786..f7840808a0 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -263,9 +263,9 @@ extern void ppu_set_breakpoint(u32 addr) const auto _break = ::narrow(reinterpret_cast(&ppu_break)); - if (ppu_ref(addr / 4) != _break) + if (ppu_ref(addr) != _break) { - ppu_ref(addr / 4) = _break; + ppu_ref(addr) = _break; } } @@ -279,9 +279,9 @@ extern void ppu_remove_breakpoint(u32 addr) const auto _break = ::narrow(reinterpret_cast(&ppu_break)); - if (ppu_ref(addr / 4) == _break) + if (ppu_ref(addr) == _break) { - ppu_ref(addr / 4) = ppu_cache(addr); + ppu_ref(addr) = ppu_cache(addr); } } @@ -829,6 +829,17 @@ extern void ppu_initialize() return; } + if (g_cfg_ppu_decoder.get() == ppu_decoder_type::llvm) + { + idm::select([](u32, lv2_prx& prx) + { + if (prx.name == "libfiber.sprx") + { + fmt::raw_error("libfiber.sprx is not compatible with PPU LLVM Recompiler."); + } + }); + } + std::size_t fpos = 0; while (fpos < _funcs->size())