feat: lunadbg GDB plugin to ease kernel debugging process.
[lunaix-os.git] / lunaix-os / hal / timer / apic_timer.c
index db3e700d004960281d8b000a6240e1e5f9b2ef2a..97f97440942ee7b69126712324561de4caf8e842 100644 (file)
@@ -1,7 +1,7 @@
 #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>
@@ -109,13 +109,13 @@ apic_timer_init(struct hwtimer* timer, u32_t hertz, timer_tick_cb timer_cb)
 
 #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!
@@ -125,26 +125,25 @@ apic_timer_init(struct hwtimer* timer, u32_t hertz, timer_tick_cb timer_cb)
 
     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", 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*