/* * Copyright (c) 2019 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include extern FUNC_NORETURN void z_cstart(void); FUNC_NORETURN void z_x86_prep_c(int unused, struct multiboot_info *info) { ARG_UNUSED(unused); _kernel.cpus[0].nested = 0; _kernel.cpus[0].irq_stack = Z_THREAD_STACK_BUFFER(_interrupt_stack) + CONFIG_ISR_STACK_SIZE; #ifdef CONFIG_X86_VERY_EARLY_CONSOLE z_x86_early_serial_init(); #endif #ifdef CONFIG_MULTIBOOT_INFO z_multiboot_init(info); #else ARG_UNUSED(info); #endif #ifdef CONFIG_ACPI z_acpi_init(); #endif #ifdef CONFIG_X86_MMU z_x86_paging_init(); #endif #if CONFIG_X86_STACK_PROTECTION z_x86_mmu_set_flags(&z_x86_kernel_ptables, _interrupt_stack, MMU_PAGE_SIZE, MMU_ENTRY_READ, Z_X86_MMU_RW, true); #endif #if defined(CONFIG_SMP) z_x86_ipi_setup(); #endif z_cstart(); }