From e899de88ff2476721d50aac19984d5bac03582fe Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 11 Feb 2017 02:42:59 +0300 Subject: [PATCH] Log empty functions --- rpcs3/Emu/Cell/PPUThread.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 030b19cebb..9bfda7996f 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -90,15 +90,27 @@ static u32 ppu_cache(u32 addr) return ::narrow(reinterpret_cast(table[ppu_decode(vm::read32(addr))])); } +static void ppu_fallback(ppu_thread& ppu) +{ + fmt::throw_exception("Unregistered PPU instruction [0x%08x]", ppu.cia); +} + extern void ppu_register_range(u32 addr, u32 size) { + if (!size) + { + LOG_ERROR(PPU, "ppu_register_range(0x%x): empty range", addr); + return; + } + // Register executable range at memory_helper::commit_page_memory(s_ppu_compiled + addr / 4, size); + const u32 fallback = ::narrow(reinterpret_cast(ppu_fallback)); + while (size) { - // TODO - s_ppu_compiled[addr / 4] = 0; + s_ppu_compiled[addr / 4] = fallback; addr += 4; size -= 4; } @@ -106,6 +118,12 @@ extern void ppu_register_range(u32 addr, u32 size) extern void ppu_register_function_at(u32 addr, u32 size, ppu_function_t ptr) { + if (!size) + { + LOG_ERROR(PPU, "ppu_register_function_at(0x%x): empty range", addr); + return; + } + ppu_register_range(addr, size); if (g_cfg_ppu_decoder.get() == ppu_decoder_type::llvm)