1 /* 2 * Copyright 2013-2019 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef KERNEL_BOOT_PLATFORM_EFI_ARCH_SMP_H 6 #define KERNEL_BOOT_PLATFORM_EFI_ARCH_SMP_H 7 8 9 #include <boot/menu.h> 10 11 12 #if defined(__riscv) || defined(__ARM__) || defined(__aarch64__) 13 // These platforms take inventory of cpu cores from fdt 14 15 struct platform_cpu_info { 16 uint32 id; 17 }; 18 19 void arch_smp_register_cpu(platform_cpu_info** cpu); 20 #endif 21 22 23 int arch_smp_get_current_cpu(void); 24 void arch_smp_init_other_cpus(void); 25 #ifdef __riscv 26 void arch_smp_boot_other_cpus(uint64 satp, uint64 kernel_entry); 27 #else 28 void arch_smp_boot_other_cpus(uint32 pml4, uint64 kernel_entry); 29 #endif 30 void arch_smp_add_safemode_menus(Menu *menu); 31 void arch_smp_init(void); 32 33 34 #endif /* KERNEL_BOOT_PLATFORM_EFI_ARCH_SMP_H */ 35