#include <hal/apic_timer.h>
-#include <hal/hwrtc.h>
#include <hal/hwtimer.h>
+#include <lunaix/clock.h>
#include <lunaix/compiler.h>
#include <lunaix/isrm.h>
#include <lunaix/spike.h>
#ifdef __LUNAIXOS_DEBUG__
if (frequency < 1000) {
- kprintf(KWARN "Frequency too low. Millisecond timer might be dodgy.");
+ WARN("Frequency too low. Millisecond timer might be dodgy.");
}
#endif
apic_timer_done = 0;
- primary_rtc->cls_mask(primary_rtc);
+ sysrtc->cls_mask(sysrtc);
apic_write_reg(APIC_TIMER_ICR, APIC_BASETICKS); // start APIC timer
// enable interrupt, just for our RTC start ticking!
cpu_disable_interrupt();
- primary_rtc->set_mask(primary_rtc);
+ sysrtc->set_mask(sysrtc);
- base_freq = primary_rtc->get_counts(primary_rtc);
- base_freq = APIC_BASETICKS / base_freq * primary_rtc->base_freq;
+ base_freq = sysrtc->get_counts(sysrtc);
+ base_freq = APIC_BASETICKS / base_freq * sysrtc->base_freq;
assert_msg(base_freq, "Fail to initialize timer (NOFREQ)");
- kprintf(KINFO "hw: %u Hz; os: %u Hz\n", base_freq, frequency);
+ kprintf("hw: %u Hz; os: %u Hz", base_freq, frequency);
// cleanup
isrm_ivfree(iv_timer);
+ ticks_t tphz = base_freq / frequency;
+ timer->base_freq = base_freq;
+ apic_write_reg(APIC_TIMER_ICR, tphz);
+
apic_write_reg(
APIC_TIMER_LVT,
LVT_ENTRY_TIMER(isrm_ivexalloc(apic_timer_tick_isr), LVT_TIMER_PERIODIC));
-
- timer->base_freq = base_freq;
-
- ticks_t tphz = base_freq / frequency;
- apic_write_reg(APIC_TIMER_ICR, tphz);
}
struct hwtimer*