1#ifndef ARCH_ARM_SOC_H 2#define ARCH_ARM_SOC_H 3 4class InterruptController; 5 6#include <drivers/bus/FDT.h> 7#include <private/kernel/int.h> 8#include <private/kernel/timer.h> 9 10// ------------------------------------------------------ InterruptController 11 12class InterruptController { 13public: 14 virtual void EnableInterrupt(int32 irq) = 0; 15 virtual void DisableInterrupt(int32 irq) = 0; 16 17 virtual void HandleInterrupt() = 0; 18 19 static InterruptController* Get() { 20 return sInstance; 21 } 22 23protected: 24 InterruptController() 25 { 26 if (sInstance) { 27 panic("Multiple InterruptController objects created; that is currently unsupported!"); 28 } 29 sInstance = this; 30 } 31 32 static InterruptController *sInstance; 33}; 34 35 36// ------------------------------------------------------ HardwareTimer 37 38class HardwareTimer { 39public: 40 virtual void SetTimeout(bigtime_t timeout) = 0; 41 virtual bigtime_t Time() = 0; 42 virtual void Clear() = 0; 43 44 static HardwareTimer* Get() { 45 return sInstance; 46 } 47 48protected: 49 HardwareTimer() 50 { 51 if (sInstance) { 52 panic("Multiple HardwareTimer objects created; that is currently unsupported!"); 53 } 54 sInstance = this; 55 } 56 57 static HardwareTimer *sInstance; 58}; 59 60#endif // ARCH_ARM_SOC_H 61