1 #pragma once
2 
3 #include "Iop_Module.h"
4 
5 class CIopBios;
6 
7 namespace Iop
8 {
9 	class CIntrman : public CModule
10 	{
11 	public:
12 		CIntrman(CIopBios&, uint8*);
13 		virtual ~CIntrman() = default;
14 
15 		std::string GetId() const override;
16 		std::string GetFunctionName(unsigned int) const override;
17 		void Invoke(CMIPS&, unsigned int) override;
18 
19 	private:
20 		uint32 RegisterIntrHandler(uint32, uint32, uint32, uint32);
21 		uint32 ReleaseIntrHandler(uint32);
22 		uint32 EnableIntrLine(CMIPS&, uint32);
23 		uint32 DisableIntrLine(CMIPS&, uint32, uint32);
24 		uint32 EnableInterrupts(CMIPS&);
25 		uint32 DisableInterrupts(CMIPS&);
26 		uint32 SuspendInterrupts(CMIPS&, uint32);
27 		uint32 ResumeInterrupts(CMIPS&, uint32);
28 		uint32 QueryIntrContext(CMIPS&);
29 		uint8* m_ram = nullptr;
30 		CIopBios& m_bios;
31 	};
32 }
33