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 60a6de3fd5..e9477f128b 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 b96b206c0f..2578f48fd3 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 fe712ed043..fa08d55252 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 6f4de85371..0ce65ba149 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 29c41f73eb..4fb81d6e48 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 ce7796bf2d..0000000000 --- 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 8a424ad805..83bfb5239c 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 af990d1f12..4fe96f5bfc 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 93988b44f5..5e2d3d51b6 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 90e1d2b766..0000000000 --- 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 e864aefe2b..af1f022852 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 434c446e98..168f0f2ccc 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 d7fe49d435..03a80c6aaf 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 a66cfa4188..0000000000 --- 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 dcf13f5672..1771ee79bc 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 7e006432a0..efbc2bb759 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 63565589da..0ae6d63e51 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 bf1987bf1f..0000000000 --- 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 d32678a8bd..0eaa4f1cc1 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 01fd6bf911..f2d4cdaa93 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 fda50310d9..e27c949799 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 eada803ef5..7b15bce2a0 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 2beeb37517..7cb616fbc9 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();