1 #ifndef ARCH_ARM_SOC_H 2 #define ARCH_ARM_SOC_H 3 4 class InterruptController; 5 6 #include <drivers/bus/FDT.h> 7 #include <private/kernel/int.h> 8 #include <private/kernel/timer.h> 9 10 // ------------------------------------------------------ InterruptController 11 12 class InterruptController { 13 public: 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 23 protected: 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 38 class HardwareTimer { 39 public: 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 48 protected: 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