32 lines
713 B
C++
32 lines
713 B
C++
#include "timer.h"
|
|
#include "kernel.h"
|
|
#include "util/log.h"
|
|
|
|
volatile unsigned int *const kernel::devices::SystemTimer::registers = (unsigned int *)0xFFFFFF803F003000;
|
|
|
|
kernel::devices::SystemTimer::SystemTimer()
|
|
{
|
|
this->delta = 50;
|
|
reset();
|
|
}
|
|
|
|
kernel::devices::SystemTimer::SystemTimer(unsigned int delta)
|
|
{
|
|
this->delta = delta;
|
|
reset();
|
|
}
|
|
|
|
void kernel::devices::SystemTimer::handleInterrupt(int src)
|
|
{
|
|
reset();
|
|
// kernelLog(LogLevel::DEBUG, "Timer interrupt: %i", registers[CLO]);
|
|
kernel::kernel.switchTask();
|
|
}
|
|
|
|
void kernel::devices::SystemTimer::reset()
|
|
{
|
|
unsigned int currentTime = registers[CLO];
|
|
registers[C1] = currentTime + (delta * 1000);
|
|
registers[CS] = 0xF;
|
|
}
|