]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/sparc/startup-sparc.cpp
aec1e8e3238bc15ca5bfa9a81641b48d00166370
[l4.git] / kernel / fiasco / src / kern / sparc / startup-sparc.cpp
1 IMPLEMENTATION [sparc]:
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   Paging::init();
37   puts("Kmem_alloc::init()");
38   //init buddy allocator
39   Kmem_alloc::init();
40
41   // Initialize cpu-local data management and run constructors for CPU 0
42   Per_cpu_data::init_ctors();
43
44   // not really necessary for uni processor
45   Per_cpu_data_alloc::alloc(0);
46   Per_cpu_data::run_ctors(0);
47   Cpu::cpus.cpu(0).init(true);
48
49   //idle task
50   Kernel_task::init();
51 #if 0
52   Pic::init();
53   Timer::init(0);
54 #endif
55   Utcb_init::init();
56   puts("Startup::stage2 finished");
57 }
58