]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ppc32/startup-ppc32.cpp
update
[l4.git] / kernel / fiasco / src / kern / ppc32 / startup-ppc32.cpp
1 IMPLEMENTATION [ppc32]:
2
3 #include "banner.h"
4 #include "boot_info.h"
5 #include "config.h"
6 #include "cpu.h"
7 #include "kip_init.h"
8 #include "kernel_task.h"
9 #include "kmem_alloc.h"
10 #include "per_cpu_data.h"
11 #include "per_cpu_data_alloc.h"
12 #include "pic.h"
13 #include "static_init.h"
14 #include "timer.h"
15 #include "utcb_init.h"
16 #include <cstdio>
17
18 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
19 void
20 Startup::stage1()
21 {
22   Proc::cli();
23   Boot_info::init();
24   Cpu::early_init();
25   Config::init();
26 }
27
28 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
29 void
30 Startup::stage2()
31 {
32   Banner::init();
33   puts("Hello from Startup::stage2");
34
35   Kip_init::init();
36   //init htab
37   Mem_space::init();
38   //init buddy allocator
39   Kmem_alloc::init();
40   //init trace buffer
41   Mem_layout::init();
42
43   // Initialize cpu-local data management and run constructors for CPU 0
44   Per_cpu_data::init_ctors();
45
46   // not really necessary for uni processor
47   Per_cpu_data_alloc::alloc(0);
48   Per_cpu_data::run_ctors(0);
49   Cpu::cpus.cpu(0).init(true);
50
51   //idle task
52   Kernel_task::init();
53   Pic::init();
54   Timer::init(0);
55   Utcb_init::init();
56   puts("Startup::stage2 finished");
57 }
58