From 8034196c25737cdda5fa4324586abfce08ba1203 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 26 Jun 2017 01:44:05 +0300 Subject: [PATCH] ppu_syscall_code type added (for fmt) --- rpcs3/Emu/Cell/PPUThread.cpp | 3 +-- rpcs3/Emu/Cell/PPUThread.h | 5 +++++ rpcs3/Emu/Cell/PPUTranslator.cpp | 4 +--- rpcs3/Emu/Cell/lv2/lv2.cpp | 10 ++++++++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 56a7cc2f6f..f420f529ae 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -763,7 +763,6 @@ const ppu_decoder s_ppu_itype; extern u64 get_timebased_time(); extern ppu_function_t ppu_get_syscall(u64 code); -extern std::string ppu_get_syscall_name(u64 code); extern __m128 sse_exp2_ps(__m128 A); extern __m128 sse_log2_ps(__m128 A); @@ -957,7 +956,7 @@ extern void ppu_initialize(const ppu_module& info) { if (auto sc = ppu_get_syscall(index)) { - link_table.emplace(ppu_get_syscall_name(index), (u64)sc); + link_table.emplace(fmt::format("%s", ppu_syscall_code(index)), (u64)sc); } } diff --git a/rpcs3/Emu/Cell/PPUThread.h b/rpcs3/Emu/Cell/PPUThread.h index 8b416edb6b..b00c95070e 100644 --- a/rpcs3/Emu/Cell/PPUThread.h +++ b/rpcs3/Emu/Cell/PPUThread.h @@ -18,6 +18,11 @@ enum class ppu_cmd : u32 sleep, }; +// Formatting helper +enum class ppu_syscall_code : u64 +{ +}; + class ppu_thread : public cpu_thread { public: diff --git a/rpcs3/Emu/Cell/PPUTranslator.cpp b/rpcs3/Emu/Cell/PPUTranslator.cpp index 8f264fc362..c04bf23c1e 100644 --- a/rpcs3/Emu/Cell/PPUTranslator.cpp +++ b/rpcs3/Emu/Cell/PPUTranslator.cpp @@ -7,8 +7,6 @@ #include "../Utilities/Log.h" #include -extern std::string ppu_get_syscall_name(u64 code); - using namespace llvm; const ppu_decoder s_ppu_decoder; @@ -1647,7 +1645,7 @@ void PPUTranslator::SC(ppu_opcode_t op) if (index < 1024) { // Call the syscall directly - Call(GetType(), ppu_get_syscall_name(index), m_thread); + Call(GetType(), fmt::format("%s", ppu_syscall_code(index)), m_thread); m_ir->CreateRetVoid(); return; } diff --git a/rpcs3/Emu/Cell/lv2/lv2.cpp b/rpcs3/Emu/Cell/lv2/lv2.cpp index a0f35044d9..24e57b4a8c 100644 --- a/rpcs3/Emu/Cell/lv2/lv2.cpp +++ b/rpcs3/Emu/Cell/lv2/lv2.cpp @@ -33,9 +33,15 @@ extern std::string ppu_get_syscall_name(u64 code); +template <> +void fmt_class_string::format(std::string& out, u64 arg) +{ + out += ppu_get_syscall_name(arg); +} + static bool null_func(ppu_thread& ppu) { - LOG_TODO(HLE, "Unimplemented syscall %s -> CELL_OK", ppu_get_syscall_name(ppu.gpr[11])); + LOG_TODO(HLE, "Unimplemented syscall %s -> CELL_OK", ppu_syscall_code(ppu.gpr[11])); ppu.gpr[3] = 0; ppu.cia += 4; return false; @@ -979,7 +985,7 @@ extern void ppu_execute_syscall(ppu_thread& ppu, u64 code) if (auto func = g_ppu_syscall_table[code]) { func(ppu); - LOG_TRACE(PPU, "Syscall '%s' (%llu) finished, r3=0x%llx", ppu_get_syscall_name(code), code, ppu.gpr[3]); + LOG_TRACE(PPU, "Syscall '%s' (%llu) finished, r3=0x%llx", ppu_syscall_code(code), code, ppu.gpr[3]); return; } }