1 INTERFACE [arm && s3c2410]:
8 static unsigned irq() { return 14; }
12 TCFG0 = Kmem::Timer_map_base + 0x00,
13 TCFG1 = Kmem::Timer_map_base + 0x04,
14 TCON = Kmem::Timer_map_base + 0x08,
15 TCNTB0 = Kmem::Timer_map_base + 0x0c,
16 TCMPB0 = Kmem::Timer_map_base + 0x10,
17 TCNTO0 = Kmem::Timer_map_base + 0x14,
18 TCNTB1 = Kmem::Timer_map_base + 0x18,
19 TCMPB1 = Kmem::Timer_map_base + 0x1c,
20 TCNTO1 = Kmem::Timer_map_base + 0x20,
21 TCNTB2 = Kmem::Timer_map_base + 0x24,
22 TCMPB2 = Kmem::Timer_map_base + 0x28,
23 TCNTO2 = Kmem::Timer_map_base + 0x2c,
24 TCNTB3 = Kmem::Timer_map_base + 0x30,
25 TCMPB3 = Kmem::Timer_map_base + 0x34,
26 TCNTO3 = Kmem::Timer_map_base + 0x38,
27 TCNTB4 = Kmem::Timer_map_base + 0x3c,
28 TCNTO4 = Kmem::Timer_map_base + 0x40,
33 // -----------------------------------------------------------------------
34 IMPLEMENTATION [arm && s3c2410]:
43 void Timer::init(unsigned)
45 Io::write(0, TCFG0); // prescaler config
46 Io::write(0, TCFG1); // mux select
47 Io::write(33333, TCNTB4); // reload value
49 Io::write(5 << 20, TCON); // start + autoreload
59 Timer::timer_to_us(Unsigned32 /*cr*/)
64 Timer::us_to_timer(Unsigned64 us)
65 { (void)us; return 0; }
69 Timer::update_one_shot(Unsigned64 wakeup)
74 IMPLEMENT inline NEEDS["config.h", "kip.h", "io.h", Timer::timer_to_us]
78 if (Config::Scheduler_one_shot)
79 //return Kip::k()->clock + timer_to_us(Io::read<Unsigned32>(OSCR));
82 return Kip::k()->clock;