Changeset View
Changeset View
Standalone View
Standalone View
sys/x86/include/x86_smp.h
Show All 17 Lines | |||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <machine/frame.h> | #include <machine/frame.h> | ||||
#include <machine/intr_machdep.h> | #include <machine/intr_machdep.h> | ||||
#include <x86/apicvar.h> | #include <x86/apicvar.h> | ||||
#include <machine/pcb.h> | #include <machine/pcb.h> | ||||
struct pmap; | struct pmap; | ||||
#ifdef __i386__ | |||||
extern unsigned int boot_address; | |||||
#endif | |||||
/* global data in mp_x86.c */ | /* global data in mp_x86.c */ | ||||
extern int mp_naps; | extern int mp_naps; | ||||
extern int boot_cpu_id; | extern int boot_cpu_id; | ||||
extern struct pcb stoppcbs[]; | extern struct pcb stoppcbs[]; | ||||
extern int cpu_apic_ids[]; | extern int cpu_apic_ids[]; | ||||
extern int bootAP; | extern int bootAP; | ||||
extern void *dpcpu; | extern void *dpcpu; | ||||
extern char *bootSTK; | extern char *bootSTK; | ||||
extern void *bootstacks[]; | extern void *bootstacks[]; | ||||
extern unsigned int boot_address; | |||||
extern unsigned int bootMP_size; | extern unsigned int bootMP_size; | ||||
extern volatile int aps_ready; | extern volatile int aps_ready; | ||||
extern struct mtx ap_boot_mtx; | extern struct mtx ap_boot_mtx; | ||||
extern int cpu_logical; | extern int cpu_logical; | ||||
extern int cpu_cores; | extern int cpu_cores; | ||||
extern volatile uint32_t smp_tlb_generation; | extern volatile uint32_t smp_tlb_generation; | ||||
extern struct pmap *smp_tlb_pmap; | extern struct pmap *smp_tlb_pmap; | ||||
extern vm_offset_t smp_tlb_addr1, smp_tlb_addr2; | extern vm_offset_t smp_tlb_addr1, smp_tlb_addr2; | ||||
Show All 35 Lines | inthand_t | ||||
IDTVEC(ipi_swi), /* Runs delayed SWI */ | IDTVEC(ipi_swi), /* Runs delayed SWI */ | ||||
IDTVEC(cpustop), /* CPU stops & waits to be restarted */ | IDTVEC(cpustop), /* CPU stops & waits to be restarted */ | ||||
IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */ | IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */ | ||||
IDTVEC(rendezvous); /* handle CPU rendezvous */ | IDTVEC(rendezvous); /* handle CPU rendezvous */ | ||||
typedef void (*smp_invl_cb_t)(struct pmap *, vm_offset_t addr1, | typedef void (*smp_invl_cb_t)(struct pmap *, vm_offset_t addr1, | ||||
vm_offset_t addr2); | vm_offset_t addr2); | ||||
#ifdef __i386__ | |||||
void alloc_ap_trampoline(vm_paddr_t *physmap, unsigned int *physmap_idx); | |||||
#endif | |||||
/* functions in x86_mp.c */ | /* functions in x86_mp.c */ | ||||
void assign_cpu_ids(void); | void assign_cpu_ids(void); | ||||
void cpu_add(u_int apic_id, char boot_cpu); | void cpu_add(u_int apic_id, char boot_cpu); | ||||
void cpustop_handler(void); | void cpustop_handler(void); | ||||
void cpususpend_handler(void); | void cpususpend_handler(void); | ||||
void alloc_ap_trampoline(vm_paddr_t *physmap, unsigned int *physmap_idx); | |||||
void init_secondary_tail(void); | void init_secondary_tail(void); | ||||
void init_secondary(void); | void init_secondary(void); | ||||
void ipi_startup(int apic_id, int vector); | void ipi_startup(int apic_id, int vector); | ||||
void ipi_all_but_self(u_int ipi); | void ipi_all_but_self(u_int ipi); | ||||
void ipi_bitmap_handler(struct trapframe frame); | void ipi_bitmap_handler(struct trapframe frame); | ||||
void ipi_cpu(int cpu, u_int ipi); | void ipi_cpu(int cpu, u_int ipi); | ||||
int ipi_nmi_handler(void); | int ipi_nmi_handler(void); | ||||
void ipi_swi_handler(struct trapframe frame); | void ipi_swi_handler(struct trapframe frame); | ||||
Show All 14 Lines |