]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/arm/timer-arm.cpp
update
[l4.git] / kernel / fiasco / src / kern / arm / timer-arm.cpp
index 685038d431a41fd4074ba68911fc758e0deb2945..9a03120d61b705ba4809b35bb08128b980d60c5a 100644 (file)
@@ -9,6 +9,26 @@ private:
   static inline void update_one_shot(Unsigned64 wakeup);
 };
 
+// ------------------------------------------------------------------------
+IMPLEMENTATION [arm && vcache]:
+
+#include "mem_unit.h"
+
+PRIVATE static inline NEEDS["mem_unit.h"]
+void
+Timer::kipclock_cache()
+{
+  Mem_unit::clean_dcache((void *)&Kip::k()->clock);
+}
+
+// ------------------------------------------------------------------------
+IMPLEMENTATION [arm && !vcache]:
+
+PRIVATE static inline
+void
+Timer::kipclock_cache()
+{}
+
 // ------------------------------------------------------------------------
 IMPLEMENTATION [arm]:
 
@@ -24,13 +44,14 @@ Timer::init_system_clock()
   Kip::k()->clock = 0;
 }
 
-IMPLEMENT inline NEEDS["config.h", "globals.h", "kip.h", "watchdog.h"]
+IMPLEMENT inline NEEDS["config.h", "globals.h", "kip.h", "watchdog.h", Timer::kipclock_cache]
 void
 Timer::update_system_clock(unsigned cpu)
 {
   if (cpu == 0)
     {
       Kip::k()->clock += Config::Scheduler_granularity;
+      kipclock_cache();
       Watchdog::touch();
     }
 }