miniOS
x86_64 hobby kernel with SMP, VFS, and POSIX process model
Loading...
Searching...
No Matches
smp_boot.c File Reference
Include dependency graph for smp_boot.c:

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

Macro Definition Documentation

◆ ICR_ASSERT

#define ICR_ASSERT   0x00004000UL /* Assert level (INIT assert) */

◆ ICR_DEASSERT

#define ICR_DEASSERT   0x00008000UL /* Level de-assert (INIT deassert) */

◆ ICR_INIT

#define ICR_INIT   0x00000500UL /* INIT IPI delivery mode */

◆ ICR_SIPI

#define ICR_SIPI   0x00000600UL /* Startup IPI delivery mode */

◆ TRAMPOLINE_PHYS

#define TRAMPOLINE_PHYS   0x8000ULL

◆ TRAMPOLINE_VA

#define TRAMPOLINE_VA   (TRAMPOLINE_PHYS + KERNEL_VMA)

Function Documentation

◆ __attribute__() [1/2]

uint8_t ap_boot_stacks[MAX_CPUS][4096] __attribute__ ( (aligned(16)) )
static

◆ __attribute__() [2/2]

__attribute__ ( (noreturn) )
static
Here is the call graph for this function:

◆ delay_10ms()

void delay_10ms ( void )
static
Here is the caller graph for this function:

Variable Documentation

◆ trampoline_end

uint8_t trampoline_end[]
extern

◆ trampoline_start

uint8_t trampoline_start[]
extern