2022-03-08 10:11:19 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Types.h"
|
2022-03-09 10:50:08 -05:00
|
|
|
#include "zip/ZipArchiveWriter.h"
|
|
|
|
#include "zip/ZipArchiveReader.h"
|
2022-03-08 10:11:19 -05:00
|
|
|
|
|
|
|
namespace Iop
|
|
|
|
{
|
2022-03-08 17:50:17 -05:00
|
|
|
class CIntc;
|
|
|
|
|
2022-03-08 10:11:19 -05:00
|
|
|
class CIlink
|
|
|
|
{
|
|
|
|
public:
|
2022-03-08 17:50:17 -05:00
|
|
|
CIlink(CIntc&);
|
|
|
|
|
2022-03-08 10:11:19 -05:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
ADDR_BEGIN = 0x1F808400,
|
2022-03-10 15:57:29 +01:00
|
|
|
ADDR_END = 0x1F808554
|
2022-03-08 10:11:19 -05:00
|
|
|
};
|
|
|
|
|
2022-03-08 17:50:17 -05:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
REG_NODEID = 0x1F808400,
|
|
|
|
REG_CTRL2 = 0x1F808410,
|
|
|
|
REG_PHY_ACCESS = 0x1F808414,
|
|
|
|
REG_INTR0 = 0x1F808420,
|
|
|
|
REG_INTR0_MASK = 0x1F808424,
|
|
|
|
REG_INTR1 = 0x1F808428,
|
|
|
|
REG_INTR1_MASK = 0x1F80842C,
|
2022-03-10 15:59:03 +01:00
|
|
|
REG_INTR2 = 0x1F808430,
|
|
|
|
REG_INTR2_MASK = 0x1F808434,
|
2022-03-08 17:50:17 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
INTR0_PHYRRX = 0x40000000
|
|
|
|
};
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
REG_CTRL2_SOK = 0x08,
|
|
|
|
};
|
|
|
|
|
|
|
|
void Reset();
|
|
|
|
|
2022-03-09 10:50:08 -05:00
|
|
|
void LoadState(Framework::CZipArchiveReader&);
|
|
|
|
void SaveState(Framework::CZipArchiveWriter&);
|
|
|
|
|
2022-03-08 10:11:19 -05:00
|
|
|
uint32 ReadRegister(uint32);
|
|
|
|
void WriteRegister(uint32, uint32);
|
|
|
|
|
|
|
|
private:
|
|
|
|
void LogRead(uint32);
|
|
|
|
void LogWrite(uint32, uint32);
|
2022-03-08 17:50:17 -05:00
|
|
|
|
|
|
|
CIntc& m_intc;
|
|
|
|
|
2022-03-10 15:58:14 +01:00
|
|
|
uint32 m_ctrl2 = 0;
|
2022-03-08 17:50:17 -05:00
|
|
|
uint32 m_phyResult;
|
|
|
|
uint32 m_intr0;
|
|
|
|
uint32 m_intr0Mask;
|
|
|
|
uint32 m_intr1;
|
|
|
|
uint32 m_intr1Mask;
|
2022-03-10 15:59:03 +01:00
|
|
|
uint32 m_intr2;
|
|
|
|
uint32 m_intr2Mask;
|
2022-03-08 10:11:19 -05:00
|
|
|
};
|
|
|
|
}
|