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.
This commit is contained in:
parent
5da7d700ca
commit
1ce1304d0f
|
@ -459,13 +459,10 @@
|
|||
<ClInclude Include="PowerPC\CachedInterpreter\InterpreterBlockCache.h" />
|
||||
<ClInclude Include="PowerPC\Interpreter\Interpreter.h" />
|
||||
<ClInclude Include="PowerPC\Interpreter\Interpreter_FPUtils.h" />
|
||||
<ClInclude Include="PowerPC\Interpreter\Interpreter_Tables.h" />
|
||||
<ClInclude Include="PowerPC\Jit64IL\JitIL.h" />
|
||||
<ClInclude Include="PowerPC\Jit64IL\JitIL_Tables.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\FPURegCache.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\GPRRegCache.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\Jit.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\Jit64_Tables.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\JitAsm.h" />
|
||||
<ClInclude Include="PowerPC\Jit64\JitRegCache.h" />
|
||||
<ClInclude Include="PowerPC\JitILCommon\IR.h" />
|
||||
|
|
|
@ -931,15 +931,9 @@
|
|||
<ClInclude Include="PowerPC\Interpreter\Interpreter_FPUtils.h">
|
||||
<Filter>PowerPC\Interpreter</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PowerPC\Interpreter\Interpreter_Tables.h">
|
||||
<Filter>PowerPC\Interpreter</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PowerPC\Jit64\Jit.h">
|
||||
<Filter>PowerPC\Jit64</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PowerPC\Jit64\Jit64_Tables.h">
|
||||
<Filter>PowerPC\Jit64</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="HW\AudioInterface.h">
|
||||
<Filter>HW %28Flipper/Hollywood%29\AI - Audio Interface</Filter>
|
||||
</ClInclude>
|
||||
|
@ -1252,9 +1246,6 @@
|
|||
<ClInclude Include="PowerPC\Jit64IL\JitIL.h">
|
||||
<Filter>PowerPC\JitIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PowerPC\Jit64IL\JitIL_Tables.h">
|
||||
<Filter>PowerPC\JitIL</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PowerPC\Jit64\FPURegCache.h">
|
||||
<Filter>PowerPC\Jit64</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -63,6 +63,7 @@ void Interpreter::RunTable63(UGeckoInstruction inst)
|
|||
|
||||
void Interpreter::Init()
|
||||
{
|
||||
InitializeInstructionTables();
|
||||
m_reserve = false;
|
||||
m_end_block = false;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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<GekkoOPTemplate, 10> 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
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -2,6 +2,8 @@
|
|||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Core/PowerPC/Jit64/Jit.h"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -2,6 +2,8 @@
|
|||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Core/PowerPC/Jit64IL/JitIL.h"
|
||||
|
||||
#include <cinttypes>
|
||||
#include <ctime> // For profiling
|
||||
#include <map>
|
||||
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -2,6 +2,8 @@
|
|||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Core/PowerPC/JitArm64/Jit.h"
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#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);
|
||||
|
|
|
@ -172,6 +172,7 @@ private:
|
|||
const u8* slowmem_code;
|
||||
};
|
||||
|
||||
static void InitializeInstructionTables();
|
||||
void CompileInstruction(PPCAnalyst::CodeOp& op);
|
||||
|
||||
void EmitResetCycleCounters();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -22,7 +22,6 @@ enum class ExceptionType
|
|||
void DoState(PointerWrap& p);
|
||||
|
||||
CPUCoreBase* InitJitCore(int core);
|
||||
void InitTables(int core);
|
||||
CPUCoreBase* GetCore();
|
||||
|
||||
// Debugging
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue