]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/arm/bsp/imx/pic-arm-imx51.cpp
update
[l4.git] / kernel / fiasco / src / kern / arm / bsp / imx / pic-arm-imx51.cpp
1 INTERFACE [arm && pic_gic && (imx51 || imx53 || imx6)]:
2
3 #include "gic.h"
4
5 INTERFACE [arm && pic_gic && (imx51 | imx53)]:
6
7 EXTENSION class Pic
8 {
9   enum { Gic_sz = 7 };
10 };
11
12 INTERFACE [arm && pic_gic && imx6]:
13
14 EXTENSION class Pic
15 {
16   enum { Gic_sz = 8 };
17 };
18
19 // ------------------------------------------------------------------------
20 IMPLEMENTATION [arm && pic_gic && (imx51 || imx53 || imx6)]:
21
22 #include "irq_mgr_multi_chip.h"
23 #include "kmem.h"
24
25 IMPLEMENT FIASCO_INIT
26 void
27 Pic::init()
28 {
29   typedef Irq_mgr_multi_chip<Gic_sz> M;
30
31   M *m = new Boot_object<M>(1);
32
33   gic.construct(Kmem::Gic_cpu_map_base, Kmem::Gic_dist_map_base);
34   m->add_chip(0, gic, gic->nr_irqs());
35
36   Irq_mgr::mgr = m;
37 }
38
39 IMPLEMENT inline
40 Pic::Status Pic::disable_all_save()
41 { return 0; }
42
43 IMPLEMENT inline
44 void Pic::restore_all(Status)
45 {}
46
47 // ------------------------------------------------------------------------
48 IMPLEMENTATION [arm && pic_gic && mp && imx6]:
49
50 PUBLIC static
51 void Pic::init_ap(unsigned)
52 {
53   gic->init_ap();
54 }