2013-07-12 14:42:17 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include "SPUThread.h"
|
|
|
|
|
|
2015-03-11 16:30:50 +01:00
|
|
|
enum : u32
|
|
|
|
|
{
|
|
|
|
|
RAW_SPU_OFFSET = 0x00100000,
|
|
|
|
|
RAW_SPU_BASE_ADDR = 0xE0000000,
|
|
|
|
|
RAW_SPU_LS_OFFSET = 0x00000000,
|
|
|
|
|
RAW_SPU_PROB_OFFSET = 0x00040000,
|
|
|
|
|
};
|
|
|
|
|
|
2015-05-28 17:14:22 +02:00
|
|
|
force_inline static u32 GetRawSPURegAddrByNum(int num, int offset)
|
2013-07-12 14:42:17 +02:00
|
|
|
{
|
|
|
|
|
return RAW_SPU_OFFSET * num + RAW_SPU_BASE_ADDR + RAW_SPU_PROB_OFFSET + offset;
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-01 00:25:52 +02:00
|
|
|
class RawSPUThread final : public SPUThread
|
2013-07-12 14:42:17 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2015-07-01 00:25:52 +02:00
|
|
|
RawSPUThread(const std::string& name, u32 index);
|
2014-02-02 20:42:32 +01:00
|
|
|
virtual ~RawSPUThread();
|
2013-07-12 14:42:17 +02:00
|
|
|
|
2015-07-19 13:36:32 +02:00
|
|
|
bool read_reg(const u32 addr, u32& value);
|
|
|
|
|
bool write_reg(const u32 addr, const u32 value);
|
2013-07-12 14:42:17 +02:00
|
|
|
|
|
|
|
|
private:
|
2015-07-19 13:36:32 +02:00
|
|
|
virtual void task() override;
|
2013-07-12 14:42:17 +02:00
|
|
|
};
|