From 1ce1304d0f011d574eb5e942f4c4479dcaa0596c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 8 Feb 2017 04:27:04 -0500 Subject: [PATCH] CPU Backends: Make each CPU backend responsible for initializing its own instruction tables Previously, all of the internals that handled how the instruction tables are initialized were exposed externally. However, this can all be made private to each CPU backend. If each backend has an Init() function, then this is where the instruction tables should be initialized, it shouldn't be the responsibility of external code to ensure internal validity. This allows for getting rid of all the table initialization shenanigans within JitInterface and PPCTables. --- Source/Core/Core/Core.vcxproj | 3 -- Source/Core/Core/Core.vcxproj.filters | 9 ----- .../Core/PowerPC/Interpreter/Interpreter.cpp | 1 + .../Core/PowerPC/Interpreter/Interpreter.h | 2 ++ .../Interpreter/Interpreter_Tables.cpp | 36 +++++++++---------- .../PowerPC/Interpreter/Interpreter_Tables.h | 10 ------ Source/Core/Core/PowerPC/Jit64/Jit.cpp | 5 +-- Source/Core/Core/PowerPC/Jit64/Jit.h | 10 +++--- .../Core/Core/PowerPC/Jit64/Jit64_Tables.cpp | 7 +--- Source/Core/Core/PowerPC/Jit64/Jit64_Tables.h | 17 --------- Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp | 5 +-- Source/Core/Core/PowerPC/Jit64IL/JitIL.h | 4 +-- .../Core/PowerPC/Jit64IL/JitIL_Tables.cpp | 6 +--- .../Core/Core/PowerPC/Jit64IL/JitIL_Tables.h | 17 --------- Source/Core/Core/PowerPC/JitArm64/Jit.cpp | 6 ++-- Source/Core/Core/PowerPC/JitArm64/Jit.h | 1 + .../Core/PowerPC/JitArm64/JitArm64_Tables.cpp | 9 ++--- .../Core/PowerPC/JitArm64/JitArm64_Tables.h | 17 --------- Source/Core/Core/PowerPC/JitInterface.cpp | 29 +-------------- Source/Core/Core/PowerPC/JitInterface.h | 1 - Source/Core/Core/PowerPC/PPCTables.cpp | 10 ------ Source/Core/Core/PowerPC/PPCTables.h | 4 +-- Source/Core/Core/PowerPC/PowerPC.cpp | 6 ++-- 23 files changed, 44 insertions(+), 171 deletions(-) delete mode 100644 Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.h delete mode 100644 Source/Core/Core/PowerPC/Jit64/Jit64_Tables.h delete mode 100644 Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h delete mode 100644 Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.h diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index 60a6de3fd5b..e9477f128b3 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -459,13 +459,10 @@ - - - diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index b96b206c0f6..2578f48fd38 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -931,15 +931,9 @@ PowerPC\Interpreter - - PowerPC\Interpreter - PowerPC\Jit64 - - PowerPC\Jit64 - HW %28Flipper/Hollywood%29\AI - Audio Interface @@ -1252,9 +1246,6 @@ PowerPC\JitIL - - PowerPC\JitIL - PowerPC\Jit64 diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp index fe712ed043e..fa08d552520 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp @@ -63,6 +63,7 @@ void Interpreter::RunTable63(UGeckoInstruction inst) void Interpreter::Init() { + InitializeInstructionTables(); m_reserve = false; m_end_block = false; } diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.h b/Source/Core/Core/PowerPC/Interpreter/Interpreter.h index 6f4de853712..0ce65ba149a 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.h +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.h @@ -282,6 +282,8 @@ public: static u32 Helper_Carry(u32 value1, u32 value2); private: + static void InitializeInstructionTables(); + // flag helper static void Helper_UpdateCR0(u32 value); static void Helper_UpdateCR1(); diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp index 29c41f73ebe..4fb81d6e48f 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp @@ -6,7 +6,6 @@ #include "Core/PowerPC/Gekko.h" #include "Core/PowerPC/Interpreter/Interpreter.h" -#include "Core/PowerPC/Interpreter/Interpreter_Tables.h" #include "Core/PowerPC/PPCTables.h" struct GekkoOPTemplate @@ -355,8 +354,6 @@ static std::array table63_2 = }}; // clang-format on -namespace InterpreterTables -{ constexpr size_t TotalInstructionFunctionCount() { return primarytable.size() + table4_2.size() + table4_3.size() + table4.size() + table31.size() + @@ -366,7 +363,7 @@ constexpr size_t TotalInstructionFunctionCount() static_assert(TotalInstructionFunctionCount() < m_allInstructions.size(), "m_allInstructions is too small"); -void InitTables() +void Interpreter::InitializeInstructionTables() { // once initialized, tables are read-only static bool initialized = false; @@ -376,22 +373,22 @@ void InitTables() // clear for (int i = 0; i < 64; i++) { - Interpreter::m_op_table[i] = Interpreter::unknown_instruction; + m_op_table[i] = Interpreter::unknown_instruction; m_infoTable[i] = &unknownopinfo; } for (int i = 0; i < 32; i++) { - Interpreter::m_op_table59[i] = Interpreter::unknown_instruction; + m_op_table59[i] = Interpreter::unknown_instruction; m_infoTable59[i] = &unknownopinfo; } for (int i = 0; i < 1024; i++) { - Interpreter::m_op_table4[i] = Interpreter::unknown_instruction; - Interpreter::m_op_table19[i] = Interpreter::unknown_instruction; - Interpreter::m_op_table31[i] = Interpreter::unknown_instruction; - Interpreter::m_op_table63[i] = Interpreter::unknown_instruction; + m_op_table4[i] = Interpreter::unknown_instruction; + m_op_table19[i] = Interpreter::unknown_instruction; + m_op_table31[i] = Interpreter::unknown_instruction; + m_op_table63[i] = Interpreter::unknown_instruction; m_infoTable4[i] = &unknownopinfo; m_infoTable19[i] = &unknownopinfo; m_infoTable31[i] = &unknownopinfo; @@ -400,7 +397,7 @@ void InitTables() for (auto& tpl : primarytable) { - Interpreter::m_op_table[tpl.opcode] = tpl.Inst; + m_op_table[tpl.opcode] = tpl.Inst; m_infoTable[tpl.opcode] = &tpl.opinfo; } @@ -410,7 +407,7 @@ void InitTables() for (auto& tpl : table4_2) { int op = fill + tpl.opcode; - Interpreter::m_op_table4[op] = tpl.Inst; + m_op_table4[op] = tpl.Inst; m_infoTable4[op] = &tpl.opinfo; } } @@ -421,7 +418,7 @@ void InitTables() for (auto& tpl : table4_3) { int op = fill + tpl.opcode; - Interpreter::m_op_table4[op] = tpl.Inst; + m_op_table4[op] = tpl.Inst; m_infoTable4[op] = &tpl.opinfo; } } @@ -429,35 +426,35 @@ void InitTables() for (auto& tpl : table4) { int op = tpl.opcode; - Interpreter::m_op_table4[op] = tpl.Inst; + m_op_table4[op] = tpl.Inst; m_infoTable4[op] = &tpl.opinfo; } for (auto& tpl : table31) { int op = tpl.opcode; - Interpreter::m_op_table31[op] = tpl.Inst; + m_op_table31[op] = tpl.Inst; m_infoTable31[op] = &tpl.opinfo; } for (auto& tpl : table19) { int op = tpl.opcode; - Interpreter::m_op_table19[op] = tpl.Inst; + m_op_table19[op] = tpl.Inst; m_infoTable19[op] = &tpl.opinfo; } for (auto& tpl : table59) { int op = tpl.opcode; - Interpreter::m_op_table59[op] = tpl.Inst; + m_op_table59[op] = tpl.Inst; m_infoTable59[op] = &tpl.opinfo; } for (auto& tpl : table63) { int op = tpl.opcode; - Interpreter::m_op_table63[op] = tpl.Inst; + m_op_table63[op] = tpl.Inst; m_infoTable63[op] = &tpl.opinfo; } @@ -467,7 +464,7 @@ void InitTables() for (auto& tpl : table63_2) { int op = fill + tpl.opcode; - Interpreter::m_op_table63[op] = tpl.Inst; + m_op_table63[op] = tpl.Inst; m_infoTable63[op] = &tpl.opinfo; } } @@ -494,4 +491,3 @@ void InitTables() initialized = true; } -} // namespace InterpreterTables diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.h b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.h deleted file mode 100644 index ce7796bf2d3..00000000000 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -namespace InterpreterTables -{ -void InitTables(); -} diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp index 8a424ad8057..83bfb5239c4 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/PowerPC/Jit64/Jit.h" + #include #include @@ -22,8 +24,6 @@ #include "Core/HW/GPFifo.h" #include "Core/HW/ProcessorInterface.h" #include "Core/PatchEngine.h" -#include "Core/PowerPC/Jit64/Jit.h" -#include "Core/PowerPC/Jit64/Jit64_Tables.h" #include "Core/PowerPC/Jit64/JitAsm.h" #include "Core/PowerPC/Jit64/JitRegCache.h" #include "Core/PowerPC/Jit64Common/FarCodeCache.h" @@ -216,6 +216,7 @@ bool Jit64::HandleFault(uintptr_t access_address, SContext* ctx) void Jit64::Init() { + InitializeInstructionTables(); EnableBlockLink(); jo.optimizeGatherPipe = true; diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.h b/Source/Core/Core/PowerPC/Jit64/Jit.h index af990d1f129..4fe96f5bfcb 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.h +++ b/Source/Core/Core/PowerPC/Jit64/Jit.h @@ -35,17 +35,14 @@ public: Jit64() : code_buffer(32000) {} ~Jit64() {} void Init() override; - - void EnableOptimization(); - - void EnableBlockLink(); - void Shutdown() override; bool HandleFault(uintptr_t access_address, SContext* ctx) override; - bool HandleStackFault() override; + void EnableOptimization(); + void EnableBlockLink(); + // Jit! void Jit(u32 em_address) override; @@ -234,6 +231,7 @@ public: void eieio(UGeckoInstruction inst); private: + static void InitializeInstructionTables(); void CompileInstruction(PPCAnalyst::CodeOp& op); void AllocStack(); diff --git a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp index 93988b44f5e..5e2d3d51b69 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp @@ -4,7 +4,6 @@ #include "Core/PowerPC/Jit64/Jit.h" #include "Core/PowerPC/Gekko.h" -#include "Core/PowerPC/Jit64/Jit64_Tables.h" static Jit64::Instruction dynaOpTable[64]; static Jit64::Instruction dynaOpTable4[1024]; @@ -376,9 +375,7 @@ void Jit64::CompileInstruction(PPCAnalyst::CodeOp& op) } } -namespace Jit64Tables -{ -void InitTables() +void Jit64::InitializeInstructionTables() { // once initialized, tables are read-only static bool initialized = false; @@ -471,5 +468,3 @@ void InitTables() initialized = true; } - -} // namespace diff --git a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.h b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.h deleted file mode 100644 index 90e1d2b7668..00000000000 --- a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -class Jit64; - -namespace PPCAnalyst -{ -struct CodeOp; -} - -namespace Jit64Tables -{ -void InitTables(); -} diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp index e864aefe2b9..af1f022852c 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/PowerPC/Jit64IL/JitIL.h" + #include #include // For profiling #include @@ -19,8 +21,6 @@ #include "Core/HW/CPU.h" #include "Core/PatchEngine.h" #include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h" -#include "Core/PowerPC/Jit64IL/JitIL.h" -#include "Core/PowerPC/Jit64IL/JitIL_Tables.h" #include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/Profiler.h" @@ -255,6 +255,7 @@ static void Shutdown() void JitIL::Init() { + InitializeInstructionTables(); EnableBlockLink(); jo.optimizeGatherPipe = true; diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL.h b/Source/Core/Core/PowerPC/Jit64IL/JitIL.h index 434c446e98e..168f0f2ccc5 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL.h +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL.h @@ -35,11 +35,10 @@ public: // Initialization, etc void Init() override; + void Shutdown() override; void EnableBlockLink(); - void Shutdown() override; - // Jit! void Jit(u32 em_address) override; @@ -79,5 +78,6 @@ public: void DynaRunTable63(UGeckoInstruction _inst) override; private: + static void InitializeInstructionTables(); void CompileInstruction(PPCAnalyst::CodeOp& op); }; diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp index d7fe49d435c..03a80c6aaf2 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp @@ -4,7 +4,6 @@ #include "Core/PowerPC/Jit64IL/JitIL.h" #include "Core/PowerPC/Gekko.h" -#include "Core/PowerPC/Jit64IL/JitIL_Tables.h" #include "Core/PowerPC/PPCTables.h" static JitIL::Instruction dynaOpTable[64]; @@ -399,9 +398,7 @@ void JitIL::CompileInstruction(PPCAnalyst::CodeOp& op) } } -namespace JitILTables -{ -void InitTables() +void JitIL::InitializeInstructionTables() { // once initialized, tables are read-only static bool initialized = false; @@ -494,4 +491,3 @@ void InitTables() initialized = true; } -} diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h deleted file mode 100644 index a66cfa4188c..00000000000 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -class JitIL; - -namespace PPCAnalyst -{ -struct CodeOp; -} - -namespace JitILTables -{ -void InitTables(); -} diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index dcf13f5672b..1771ee79bcd 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/PowerPC/JitArm64/Jit.h" + #include #include "Common/Arm64Emitter.h" @@ -19,9 +21,7 @@ #include "Core/HW/Memmap.h" #include "Core/HW/ProcessorInterface.h" #include "Core/PatchEngine.h" -#include "Core/PowerPC/JitArm64/Jit.h" #include "Core/PowerPC/JitArm64/JitArm64_RegCache.h" -#include "Core/PowerPC/JitArm64/JitArm64_Tables.h" #include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/Profiler.h" @@ -47,6 +47,8 @@ static bool HasCycleCounters() void JitArm64::Init() { + InitializeInstructionTables(); + size_t child_code_size = SConfig::GetInstance().bMMU ? FARCODE_SIZE_MMU : FARCODE_SIZE; AllocCodeSpace(CODE_SIZE + child_code_size); AddChildCodeSpace(&farcode, child_code_size); diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.h b/Source/Core/Core/PowerPC/JitArm64/Jit.h index 7e006432a06..efbc2bb759b 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.h +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.h @@ -172,6 +172,7 @@ private: const u8* slowmem_code; }; + static void InitializeInstructionTables(); void CompileInstruction(PPCAnalyst::CodeOp& op); void EmitResetCycleCounters(); diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp index 63565589da3..0ae6d63e515 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp @@ -2,10 +2,9 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. -#include "Core/PowerPC/JitArm64/JitArm64_Tables.h" +#include "Core/PowerPC/JitArm64/Jit.h" #include "Core/PowerPC/Gekko.h" -#include "Core/PowerPC/JitArm64/Jit.h" #include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/PPCAnalyst.h" #include "Core/PowerPC/PPCTables.h" @@ -385,9 +384,7 @@ void JitArm64::CompileInstruction(PPCAnalyst::CodeOp& op) } } -namespace JitArm64Tables -{ -void InitTables() +void JitArm64::InitializeInstructionTables() { // once initialized, tables are read-only static bool initialized = false; @@ -480,5 +477,3 @@ void InitTables() initialized = true; } - -} // namespace diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.h b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.h deleted file mode 100644 index bf1987bf1f9..00000000000 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2008 Dolphin Emulator Project -// Licensed under GPLv2+ -// Refer to the license.txt file included. - -#pragma once - -class JitArm64; - -namespace PPCAnalyst -{ -struct CodeOp; -} - -namespace JitArm64Tables -{ -void InitTables(); -} diff --git a/Source/Core/Core/PowerPC/JitInterface.cpp b/Source/Core/Core/PowerPC/JitInterface.cpp index d32678a8bd4..0eaa4f1cc1b 100644 --- a/Source/Core/Core/PowerPC/JitInterface.cpp +++ b/Source/Core/Core/PowerPC/JitInterface.cpp @@ -22,14 +22,11 @@ #if _M_X86 #include "Core/PowerPC/Jit64/Jit.h" -#include "Core/PowerPC/Jit64/Jit64_Tables.h" #include "Core/PowerPC/Jit64IL/JitIL.h" -#include "Core/PowerPC/Jit64IL/JitIL_Tables.h" #endif #if _M_ARM_64 #include "Core/PowerPC/JitArm64/Jit.h" -#include "Core/PowerPC/JitArm64/JitArm64_Tables.h" #endif namespace JitInterface @@ -70,31 +67,7 @@ CPUCoreBase* InitJitCore(int core) g_jit->Init(); return ptr; } -void InitTables(int core) -{ - switch (core) - { -#if _M_X86 - case PowerPC::CORE_JIT64: - Jit64Tables::InitTables(); - break; - case PowerPC::CORE_JITIL64: - JitILTables::InitTables(); - break; -#endif -#if _M_ARM_64 - case PowerPC::CORE_JITARM64: - JitArm64Tables::InitTables(); - break; -#endif - case PowerPC::CORE_CACHEDINTERPRETER: - // has no tables - break; - default: - PanicAlert("Unrecognizable cpu_core: %d", core); - break; - } -} + CPUCoreBase* GetCore() { return g_jit; diff --git a/Source/Core/Core/PowerPC/JitInterface.h b/Source/Core/Core/PowerPC/JitInterface.h index 01fd6bf9111..f2d4cdaa93b 100644 --- a/Source/Core/Core/PowerPC/JitInterface.h +++ b/Source/Core/Core/PowerPC/JitInterface.h @@ -22,7 +22,6 @@ enum class ExceptionType void DoState(PointerWrap& p); CPUCoreBase* InitJitCore(int core); -void InitTables(int core); CPUCoreBase* GetCore(); // Debugging diff --git a/Source/Core/Core/PowerPC/PPCTables.cpp b/Source/Core/Core/PowerPC/PPCTables.cpp index fda50310d9a..e27c949799a 100644 --- a/Source/Core/Core/PowerPC/PPCTables.cpp +++ b/Source/Core/Core/PowerPC/PPCTables.cpp @@ -15,7 +15,6 @@ #include "Common/StringUtil.h" #include "Core/PowerPC/Interpreter/Interpreter.h" -#include "Core/PowerPC/Interpreter/Interpreter_Tables.h" #include "Core/PowerPC/JitInterface.h" #include "Core/PowerPC/PowerPC.h" @@ -110,15 +109,6 @@ bool UsesFPU(UGeckoInstruction inst) return (info->flags & FL_USE_FPU) != 0; } -void InitTables(int cpu_core) -{ - // Interpreter ALWAYS needs to be initialized - InterpreterTables::InitTables(); - - if (cpu_core != PowerPC::CORE_INTERPRETER) - JitInterface::InitTables(cpu_core); -} - #define OPLOG #define OP_TO_LOG "mtfsb0x" diff --git a/Source/Core/Core/PowerPC/PPCTables.h b/Source/Core/Core/PowerPC/PPCTables.h index eada803ef54..7b15bce2a00 100644 --- a/Source/Core/Core/PowerPC/PPCTables.h +++ b/Source/Core/Core/PowerPC/PPCTables.h @@ -110,7 +110,6 @@ Interpreter::Instruction GetInterpreterOp(UGeckoInstruction _inst); namespace PPCTables { -void InitTables(int cpu_core); bool IsValidInstruction(UGeckoInstruction _instCode); bool UsesFPU(UGeckoInstruction _inst); @@ -118,5 +117,4 @@ void CountInstruction(UGeckoInstruction _inst); void PrintInstructionRunCounts(); void LogCompiledInstructions(); const char* GetInstructionName(UGeckoInstruction _inst); - -} // namespace +} // namespace PPCTables diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index 2beeb375178..7cb616fbc9f 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2+ // Refer to the license.txt file included. +#include "Core/PowerPC/PowerPC.h" + #include "Common/Assert.h" #include "Common/ChunkFile.h" #include "Common/CommonTypes.h" @@ -18,8 +20,6 @@ #include "Core/PowerPC/CPUCoreBase.h" #include "Core/PowerPC/Interpreter/Interpreter.h" #include "Core/PowerPC/JitInterface.h" -#include "Core/PowerPC/PPCTables.h" -#include "Core/PowerPC/PowerPC.h" namespace PowerPC { @@ -148,8 +148,6 @@ static void ResetRegisters() static void InitializeCPUCore(int cpu_core) { - PPCTables::InitTables(cpu_core); - // We initialize the interpreter because // it is used on boot and code window independently. s_interpreter->Init();