1 /* $FreeBSD$ */ 2 3 #ifndef _MACHINE_SMP_H_ 4 #define _MACHINE_SMP_H_ 5 6 #include <sys/_cpuset.h> 7 #include <machine/pcb.h> 8 9 enum { 10 IPI_AST, 11 IPI_PREEMPT, 12 IPI_RENDEZVOUS, 13 IPI_STOP, 14 IPI_STOP_HARD = IPI_STOP, /* These are synonyms on arm. */ 15 IPI_HARDCLOCK, 16 IPI_TLB, /* Not used now, but keep it reserved. */ 17 IPI_CACHE, /* Not used now, but keep it reserved. */ 18 INTR_IPI_COUNT 19 }; 20 21 void init_secondary(int cpu); 22 void mpentry(void); 23 24 void ipi_all_but_self(u_int ipi); 25 void ipi_cpu(int cpu, u_int ipi); 26 void ipi_selected(cpuset_t cpus, u_int ipi); 27 28 /* Platform interface */ 29 void platform_mp_setmaxid(void); 30 void platform_mp_start_ap(void); 31 32 /* global data in mp_machdep.c */ 33 extern struct pcb stoppcbs[]; 34 35 #endif /* !_MACHINE_SMP_H_ */ 36