Changeset View
Changeset View
Standalone View
Standalone View
head/sys/i386/i386/mp_machdep.c
Show First 20 Lines • Show All 182 Lines • ▼ Show 20 Lines | cpu_mp_start(void) | ||||
/* Install an inter-CPU IPI for CPU stop/restart */ | /* Install an inter-CPU IPI for CPU stop/restart */ | ||||
setidt(IPI_STOP, IDTVEC(cpustop), | setidt(IPI_STOP, IDTVEC(cpustop), | ||||
SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); | SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); | ||||
/* Install an inter-CPU IPI for CPU suspend/resume */ | /* Install an inter-CPU IPI for CPU suspend/resume */ | ||||
setidt(IPI_SUSPEND, IDTVEC(cpususpend), | setidt(IPI_SUSPEND, IDTVEC(cpususpend), | ||||
SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); | SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); | ||||
/* Install an IPI for calling delayed SWI */ | |||||
setidt(IPI_SWI, IDTVEC(ipi_swi), | |||||
SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); | |||||
/* Set boot_cpu_id if needed. */ | /* Set boot_cpu_id if needed. */ | ||||
if (boot_cpu_id == -1) { | if (boot_cpu_id == -1) { | ||||
boot_cpu_id = PCPU_GET(apic_id); | boot_cpu_id = PCPU_GET(apic_id); | ||||
cpu_info[boot_cpu_id].cpu_bsp = 1; | cpu_info[boot_cpu_id].cpu_bsp = 1; | ||||
} else | } else | ||||
KASSERT(boot_cpu_id == PCPU_GET(apic_id), | KASSERT(boot_cpu_id == PCPU_GET(apic_id), | ||||
("BSP's APIC ID doesn't match boot_cpu_id")); | ("BSP's APIC ID doesn't match boot_cpu_id")); | ||||
▲ Show 20 Lines • Show All 486 Lines • Show Last 20 Lines |