27 lines
532 B
C
27 lines
532 B
C
// SPDX-License-Identifier: ISC
|
|
|
|
#pragma once
|
|
|
|
#include <zinnia/atomic.h>
|
|
#include <zinnia/compiler.h>
|
|
#include <zinnia/utils.h>
|
|
#include <stdint.h>
|
|
#include <x86_64/gdt.h>
|
|
|
|
struct [[__packed]] smp_info {
|
|
struct gdt gdt;
|
|
struct gdtr gdtr;
|
|
uint32_t farjmp_offset;
|
|
uint32_t farjmp_segment;
|
|
uint32_t temp_stack;
|
|
uint32_t temp_cr3;
|
|
uint64_t entry;
|
|
uint64_t hhdm_offset;
|
|
uint64_t percpu;
|
|
uint32_t lapic_id;
|
|
atomic_bool booted;
|
|
};
|
|
|
|
// Discovers all APs and starts them.
|
|
void x86_64_smp_init();
|