Play-/Source/iop/Iop_Ilink.h

69 lines
1 KiB
C
Raw Permalink Normal View History

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
{
class CIntc;
2022-03-08 10:11:19 -05:00
class CIlink
{
public:
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
};
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,
};
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);
CIntc& m_intc;
uint32 m_ctrl2 = 0;
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
};
}