]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/arm/startup-arm.cpp
Some minor fixes.
[l4.git] / kernel / fiasco / src / kern / arm / startup-arm.cpp
1 IMPLEMENTATION [arm]:
2
3 #include "config.h"
4 #include "cpu.h"
5 #include "fpu.h"
6 #include "ipi.h"
7 #include "kern_lib_page.h"
8 #include "kernel_task.h"
9 #include "kernel_uart.h"
10 #include "kip_init.h"
11 #include "kmem_alloc.h"
12 #include "kmem_space.h"
13 #include "per_cpu_data.h"
14 #include "per_cpu_data_alloc.h"
15 #include "perf_cnt.h"
16 #include "pic.h"
17 #include "platform_control.h"
18 #include "processor.h"
19 #include "static_init.h"
20 #include "thread.h"
21 #include "timer.h"
22 #include "utcb_init.h"
23
24 #include <cstdlib>
25 #include <cstdio>
26
27 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
28 void
29 Startup::stage1()
30 {
31   Kernel_uart::init(Kernel_uart::Init_after_mmu);
32   Proc::cli();
33   Cpu::early_init();
34   Config::init();
35 }
36
37 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
38 void
39 Startup::stage2()
40 {
41   Cpu_number const boot_cpu = Cpu_number::boot_cpu();
42   puts("Hello from Startup::stage2");
43   Mem_space::init_page_sizes();
44
45   Kip_init::init();
46   Kmem_alloc::init();
47
48   // Initialize cpu-local data management and run constructors for CPU 0
49   Per_cpu_data::init_ctors();
50   Per_cpu_data_alloc::alloc(boot_cpu);
51   Per_cpu_data::run_ctors(boot_cpu);
52
53   Kmem_space::init();
54   Kernel_task::init();
55   Mem_space::kernel_space(Kernel_task::kernel_task());
56   Pic::init();
57   Thread::init_per_cpu(boot_cpu, false);
58
59   Cpu::init_mmu();
60   Cpu::cpus.cpu(boot_cpu).init(false, true);
61   Platform_control::init(boot_cpu);
62   Fpu::init(boot_cpu, false);
63   Ipi::init(boot_cpu);
64   Timer::init(boot_cpu);
65   Kern_lib_page::init();
66   Utcb_init::init();
67 }