|
miniOS
x86_64 hobby kernel with SMP, VFS, and POSIX process model
|
#include <miniOS/arch/x86_64/smp.h>#include <miniOS/arch/x86_64/apic.h>#include <miniOS/arch/x86_64/port.h>#include <miniOS/mm/vmm.h>#include <miniOS/io.h>#include <miniOS/syscall.h>
Macros | |
| #define | TRAMPOLINE_PHYS 0x8000ULL |
| #define | TRAMPOLINE_VA (TRAMPOLINE_PHYS + KERNEL_VMA) |
| #define | ICR_INIT 0x00000500UL /* INIT IPI delivery mode */ |
| #define | ICR_SIPI 0x00000600UL /* Startup IPI delivery mode */ |
| #define | ICR_ASSERT 0x00004000UL /* Assert level (INIT assert) */ |
| #define | ICR_DEASSERT 0x00008000UL /* Level de-assert (INIT deassert) */ |
Functions | |
| void | ap_barrier_checkin (void) |
| Signal that this AP has completed its CPU init. | |
| void | smp_wait_for_aps (void) |
| Block until all APs have checked in at the rendezvous barrier. | |
| static | __attribute__ ((noreturn)) |
| static uint8_t ap_boot_stacks[MAX_CPUS][4096] | __attribute__ ((aligned(16))) |
| static void | delay_10ms (void) |
| void | smp_boot_aps (void) |
| Send INIT-SIPI-SIPI sequence to all non-BSP CPUs. | |
Variables | |
| uint8_t | trampoline_start [] |
| uint8_t | trampoline_end [] |
| volatile uint32_t | smp_aps_ready = 0 |
| #define ICR_ASSERT 0x00004000UL /* Assert level (INIT assert) */ |
| #define ICR_DEASSERT 0x00008000UL /* Level de-assert (INIT deassert) */ |
| #define ICR_INIT 0x00000500UL /* INIT IPI delivery mode */ |
| #define ICR_SIPI 0x00000600UL /* Startup IPI delivery mode */ |
| #define TRAMPOLINE_PHYS 0x8000ULL |
| #define TRAMPOLINE_VA (TRAMPOLINE_PHYS + KERNEL_VMA) |
|
static |

|
static |

|
extern |
|
extern |