#ifndef ARCH_ARM_SOC_H
#define ARCH_ARM_SOC_H
class InterruptController;
#include <drivers/bus/FDT.h>
#include <private/kernel/interrupts.h>
#include <private/kernel/timer.h>
class InterruptController {
public:
virtual void EnableInterrupt(int32 irq) = 0;
virtual void DisableInterrupt(int32 irq) = 0;
virtual void HandleInterrupt() = 0;
static InterruptController* Get() {
return sInstance;
}
protected:
InterruptController()
{
if (sInstance) {
panic("Multiple InterruptController objects created; that is currently unsupported!");
}
sInstance = this;
}
static InterruptController *sInstance;
};
class HardwareTimer {
public:
virtual void SetTimeout(bigtime_t timeout) = 0;
virtual bigtime_t Time() = 0;
virtual void Clear() = 0;
static HardwareTimer* Get() {
return sInstance;
}
protected:
HardwareTimer()
{
if (sInstance) {
panic("Multiple HardwareTimer objects created; that is currently unsupported!");
}
sInstance = this;
}
static HardwareTimer *sInstance;
};
#endif