#ifndef FURIX_ARCH_X86_64_AP_BOOT_H #define FURIX_ARCH_X86_64_AP_BOOT_H #include #include #include /* * reserve a free page below 1 MiB for the trampoline and copy the image into * it. must run BEFORE the kernel installs its own GDT/IDT, because afterwards * we must not call into UEFI boot services again. false if no page was found. */ bool ap_boot_reserve(const EFI_SYSTEM_TABLE *st, uint64_t *out_base); /* start every MADT AP via INIT-SIPI-SIPI, waiting with a bounded spin */ uint32_t ap_boot_start(const struct acpi_madt_info *madt); /* set by each AP once running with its per-CPU area */ extern volatile uint32_t ap_online_count; #endif /* FURIX_ARCH_X86_64_AP_BOOT_H */