]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ppc32/kip_init.cpp
update
[l4.git] / kernel / fiasco / src / kern / ppc32 / kip_init.cpp
1 INTERFACE [ppc32]:
2
3 #include "kip.h"
4
5 class Kip_init
6 {
7 public:
8   static void init();
9 };
10
11
12 //---------------------------------------------------------------------------
13 IMPLEMENTATION [ppc32]:
14
15 #include "config.h"
16 #include "mem_layout.h"
17
18 // Make the stuff below apearing only in this compilation unit.
19 // Trick Preprocess to let the struct reside in the cc file rather
20 // than putting it into the _i.h file which is perfectly wrong in 
21 // this case.
22 namespace KIP_namespace
23 {
24   enum
25   {
26     Num_mem_descs = 20,
27     Max_len_version = 512,
28
29     Size_mem_descs = sizeof(Mword) * 2 * Num_mem_descs,
30   };
31
32   struct KIP
33   {
34     Kip kip;
35     char mem_descs[Size_mem_descs];
36   };
37
38   KIP ppc32_kernel_info_page asm("ppc32_kernel_info_page") __attribute__((section(".kernel_info_page"))) =
39     {
40       {
41         /* 00/00  */ L4_KERNEL_INFO_MAGIC,
42                      Config::Kernel_version_id,
43                      (Size_mem_descs + sizeof(Kip)) >> 4,
44                      {}, 0, {},
45         /* 10/20  */ 0, {},
46         /* 20/40  */ 0, 0, {},
47         /* 30/60  */ 0, 0, {},
48         /* 40/80  */ 0, 0, {},
49         /* 50/A0  */ 0, (sizeof(Kip) << (sizeof(Mword)*4)) | Num_mem_descs, {},
50         /* 60/C0  */ {},
51         /* A0/140 */ 0, 0, 0, 0,
52         /* B0/160 */ {},
53         /* E0/1C0 */ 0, 0, {},
54         /* F0/1D0 */ {"", 0}, {},
55       },
56       {}
57     };
58 };
59
60
61 IMPLEMENT
62 void Kip_init::init()
63 {
64   Kip *kinfo = reinterpret_cast<Kip*>(&KIP_namespace::ppc32_kernel_info_page);
65   Kip::init_global_kip(kinfo);
66
67   /* add kernel image */
68   kinfo->add_mem_region(Mem_desc(0,(Address)&Mem_layout::end - 1,
69                         Mem_desc::Reserved));
70
71   kinfo->add_mem_region(Mem_desc(0, Mem_layout::User_max,
72                         Mem_desc::Conventional, true));
73 }