#include #include 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" (1)); }