]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ppc32/timer-decr-ppc32.cpp
f3904ad0b2e4037a580968d47c31fa9c07bf604a
[l4.git] / kernel / fiasco / src / kern / ppc32 / timer-decr-ppc32.cpp
1 /**
2  * PowerPC timer using internal decrementer
3  */
4
5 IMPLEMENTATION [ppc32]:
6
7 #include "cpu.h"
8 #include "config.h"
9 #include "globals.h"
10 #include "kip.h"
11 #include "decrementer.h"
12 #include "warn.h"
13
14 #include <cstdio>
15
16 IMPLEMENT inline NEEDS ["decrementer.h", "kip.h", "config.h", <cstdio>]
17 void
18 Timer::init(unsigned)
19 {
20   printf("Using PowerPC decrementer for scheduling\n");
21
22   //1000 Hz
23   Decrementer::d()->init(Kip::k()->frequency_bus /
24                          (4*Config::Scheduler_granularity));
25
26 }
27
28 PUBLIC static inline
29 unsigned
30 Timer::irq()
31 { return 0; }
32
33 PUBLIC static inline
34 unsigned
35 Timer::irq_mode()
36 { return 0; }
37
38 PUBLIC static inline
39 void
40 Timer::acknowledge()
41 { }
42
43 //IMPLEMENT inline NEEDS ["decrementer.h"]
44 //void
45 //Timer::enable()
46 //{
47 //  Decrementer::d()->enable();
48 //}
49
50 //IMPLEMENT inline NEEDS ["decrementer.h"]
51 //void
52 //Timer::disable()
53 //{
54 //  Decrementer::d()->disable();
55 //}
56
57 IMPLEMENT inline NEEDS ["kip.h"]
58 void
59 Timer::init_system_clock()
60 {
61   Kip::k()->clock = 0;
62 }
63
64 IMPLEMENT inline NEEDS ["globals.h", "kip.h"]
65 Unsigned64
66 Timer::system_clock()
67 {
68   return Kip::k()->clock;
69 }
70
71 IMPLEMENT inline NEEDS ["decrementer.h", "config.h", "kip.h"]
72 void
73 Timer::update_system_clock(unsigned cpu)
74 {
75   if (cpu == 0)
76     {
77       Decrementer::d()->set();
78       Kip::k()->clock += Config::Scheduler_granularity;
79     }
80 }
81
82 IMPLEMENT inline
83 void
84 Timer::update_timer(Unsigned64)
85 {
86 }