diff --git a/rpcs3/Emu/CPU/CPUThreadManager.cpp b/rpcs3/Emu/CPU/CPUThreadManager.cpp index 01ba798add..d162bc493b 100644 --- a/rpcs3/Emu/CPU/CPUThreadManager.cpp +++ b/rpcs3/Emu/CPU/CPUThreadManager.cpp @@ -11,7 +11,6 @@ #include "Emu/ARMv7/ARMv7Thread.h" CPUThreadManager::CPUThreadManager() - : m_raw_spu_num(0) { } @@ -22,7 +21,6 @@ CPUThreadManager::~CPUThreadManager() void CPUThreadManager::Close() { - m_raw_spu_num = 0; while(m_threads.size()) RemoveThread(m_threads[0]->GetId()); } @@ -34,10 +32,26 @@ CPUThread& CPUThreadManager::AddThread(CPUThreadType type) switch(type) { - case CPU_THREAD_PPU: new_thread = new PPUThread(); break; - case CPU_THREAD_SPU: new_thread = new SPUThread(); break; - case CPU_THREAD_RAW_SPU: new_thread = new RawSPUThread(m_raw_spu_num++); break; - case CPU_THREAD_ARMv7: new_thread = new ARMv7Thread(); break; + case CPU_THREAD_PPU: + { + new_thread = new PPUThread(); + break; + } + case CPU_THREAD_SPU: + { + new_thread = new SPUThread(); + break; + } + case CPU_THREAD_RAW_SPU: + { + new_thread = new RawSPUThread(); + break; + } + case CPU_THREAD_ARMv7: + { + new_thread = new ARMv7Thread(); + break; + } default: assert(0); } diff --git a/rpcs3/Emu/CPU/CPUThreadManager.h b/rpcs3/Emu/CPU/CPUThreadManager.h index ba71cb78b9..ad312108d7 100644 --- a/rpcs3/Emu/CPU/CPUThreadManager.h +++ b/rpcs3/Emu/CPU/CPUThreadManager.h @@ -7,7 +7,6 @@ class CPUThreadManager { std::vector m_threads; std::mutex m_mtx_thread; - u32 m_raw_spu_num; public: CPUThreadManager(); diff --git a/rpcs3/Emu/Cell/RawSPUThread.cpp b/rpcs3/Emu/Cell/RawSPUThread.cpp index 4f81ccf513..7255e31952 100644 --- a/rpcs3/Emu/Cell/RawSPUThread.cpp +++ b/rpcs3/Emu/Cell/RawSPUThread.cpp @@ -7,12 +7,11 @@ #include "Emu/Cell/RawSPUThread.h" -RawSPUThread::RawSPUThread(u32 index, CPUThreadType type) +RawSPUThread::RawSPUThread(CPUThreadType type) : SPUThread(type) , MemoryBlock() - , m_index(index) { - Memory.InitRawSPU(SetRange(RAW_SPU_BASE_ADDR + RAW_SPU_OFFSET * index, RAW_SPU_PROB_OFFSET), m_index); + m_index = Memory.InitRawSPU(this); Reset(); } @@ -344,7 +343,7 @@ void RawSPUThread::Task() { PC = SPU.NPC.GetValue(); - CPUThread::Task(); + SPUThread::Task(); SPU.NPC.SetValue(PC); } diff --git a/rpcs3/Emu/Cell/RawSPUThread.h b/rpcs3/Emu/Cell/RawSPUThread.h index d8765a3b25..c7b3479f98 100644 --- a/rpcs3/Emu/Cell/RawSPUThread.h +++ b/rpcs3/Emu/Cell/RawSPUThread.h @@ -19,7 +19,7 @@ class RawSPUThread u32 m_index; public: - RawSPUThread(u32 index, CPUThreadType type = CPU_THREAD_RAW_SPU); + RawSPUThread(CPUThreadType type = CPU_THREAD_RAW_SPU); virtual ~RawSPUThread(); virtual bool Read32(const u64 addr, u32* value) override;