7 #include "kern_lib_page.h"
8 #include "kernel_task.h"
9 #include "kernel_uart.h"
11 #include "kmem_alloc.h"
12 #include "kmem_space.h"
13 #include "per_cpu_data.h"
14 #include "per_cpu_data_alloc.h"
17 #include "platform_control.h"
18 #include "processor.h"
19 #include "static_init.h"
22 #include "utcb_init.h"
27 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
31 Kernel_uart::init(Kernel_uart::Init_after_mmu);
37 IMPLEMENT FIASCO_INIT FIASCO_NOINLINE
41 Cpu_number const boot_cpu = Cpu_number::boot_cpu();
42 puts("Hello from Startup::stage2");
43 Mem_space::init_page_sizes();
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);
55 Mem_space::kernel_space(Kernel_task::kernel_task());
57 Thread::init_per_cpu(boot_cpu, false);
60 Cpu::cpus.cpu(boot_cpu).init(false, true);
61 Platform_control::init(boot_cpu);
62 Fpu::init(boot_cpu, false);
64 Timer::init(boot_cpu);
65 Kern_lib_page::init();