1 #ifndef _IOP_INTC_H_ 2 #define _IOP_INTC_H_ 3 4 #include "Types.h" 5 #include "BasicUnion.h" 6 #include "zip/ZipArchiveWriter.h" 7 #include "zip/ZipArchiveReader.h" 8 9 namespace Iop 10 { 11 class CIntc 12 { 13 public: 14 enum LINES 15 { 16 LINE_VBLANK = 0x00, 17 LINE_SBUS = 0x01, 18 LINE_CDROM = 0x02, 19 LINE_DMAC = 0x03, 20 LINE_RTC0 = 0x04, 21 LINE_RTC1 = 0x05, 22 LINE_RTC2 = 0x06, 23 LINE_SPU2 = 0x09, 24 LINE_EVBLANK = 0x0B, 25 LINE_DEV9 = 0x0D, 26 LINE_RTC3 = 0x0E, 27 LINE_RTC4 = 0x0F, 28 LINE_RTC5 = 0x10, 29 LINE_SIO2 = 0x11, 30 LINE_USB = 0x16, 31 LINE_ILINK = 0x18, 32 LINE_DMA_BASE = 0x20, 33 LINE_DMA2 = 0x22, 34 LINE_DMA4 = 0x24, //spu2 core0 35 LINE_DMA8 = 0x28, //spu2 core1 36 LINE_DMA_DEV9 = 0x29, 37 LINE_DMA9 = 0x2A, //sif0 38 LINE_DMA10 = 0x2B, //sif1 39 LINES_MAX 40 }; 41 42 enum 43 { 44 ADDR_BEGIN = 0x1F801070, 45 ADDR_END = 0x1F80107F 46 }; 47 48 enum 49 { 50 STATUS0 = 0x1F801070, 51 MASK0 = 0x1F801074, 52 STATUS1 = 0x1F801078, 53 MASK1 = 0x1F80107C, 54 }; 55 56 CIntc(); 57 virtual ~CIntc(); 58 59 void Reset(); 60 61 void LoadState(Framework::CZipArchiveReader&); 62 void SaveState(Framework::CZipArchiveWriter&); 63 64 uint32 ReadRegister(uint32); 65 uint32 WriteRegister(uint32, uint32); 66 67 void AssertLine(unsigned int); 68 void ClearLine(unsigned int); 69 void SetStatus(uint64); 70 void SetMask(uint64); 71 bool HasPendingInterrupt(); 72 73 private: 74 UNION64_32 m_status; 75 UNION64_32 m_mask; 76 }; 77 } 78 79 #endif 80