boot/efi/x86: implement SMP detection and bootup
* move common SMP initialization code to x86/arch_smp.cpp * factor out arch-specific SMP initialization to arch_smp_32.cpp resp arch_smp_64.cpp * implement smp_trampoline for x86 32-bit EFI loader * rename SMP trampoline for x86_64 to long_smp_trampoline * add new argument virtKernelArgs to arch_smp_boot_other_cpus as the kernel args are not identity mapped on 32-bit architectures Change-Id: I30d0bb1fa9bfb08f6784a2af34eb83d6b64afa57 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4869 Tested-by: Commit checker robot <[email protected]> Reviewed-by: waddlesplash <[email protected]> Reviewed-by: Fredrik Holmqvist <[email protected]>
This commit is contained in:
committed by
Fredrik Holmqvist
parent
456e6f33dd
commit
fdb459132e
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2013-2021 Haiku, Inc. All rights reserved.
|
||||
* Copyright 2013-2022 Haiku, Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef KERNEL_BOOT_PLATFORM_EFI_ARCH_SMP_H
|
||||
@@ -32,9 +32,9 @@ int arch_smp_get_current_cpu(void);
|
||||
void arch_smp_init_other_cpus(void);
|
||||
#ifdef __riscv
|
||||
platform_cpu_info* arch_smp_find_cpu(uint32 phandle);
|
||||
void arch_smp_boot_other_cpus(uint64 satp, uint64 kernel_entry);
|
||||
void arch_smp_boot_other_cpus(uint64 satp, uint64 kernelEntry, addr_t virtKernelArgs);
|
||||
#else
|
||||
void arch_smp_boot_other_cpus(uint32 pml4, uint64 kernel_entry);
|
||||
void arch_smp_boot_other_cpus(uint32 pml4, uint64 kernelEntry, addr_t virtKernelArgs);
|
||||
#endif
|
||||
void arch_smp_add_safemode_menus(Menu *menu);
|
||||
void arch_smp_init(void);
|
||||
|
||||
Reference in New Issue
Block a user