25 lines
497 B
C
25 lines
497 B
C
#pragma once
|
|
|
|
#include <zinnia/compiler.h>
|
|
#include <zinnia/utils.h>
|
|
#include <stddef.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(uint8_t) booted;
|
|
};
|
|
|
|
// Discovers all APs and starts them.
|
|
void x86_64_smp_init();
|