Files
ksOS/Kernel/Source/Arch/Timer.c
T

15 lines
406 B
C

#include <Arch/Timer.h>
#include <Arch/GIC.h>
void TimerInitialize() {
GICEnableInterrupt(kTimerIRQ);
TimerReset(kTimerFrequency);
}
void TimerReset(UInt64 interval) {
UInt64 frequency;
__asm__ volatile ("mrs %0, cntfrq_el0" : "=r"(frequency));
__asm__ volatile ("msr cntv_tval_el0, %0" :: "r"(frequency /interval));
__asm__ volatile ("msr cntv_ctl_el0, %0" :: "r"((UInt64)1));
}