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 #define IPI_AST 0 10 #define IPI_PREEMPT 2 11 #define IPI_RENDEZVOUS 3 12 #define IPI_STOP 4 13 #define IPI_STOP_HARD 4 14 #define IPI_HARDCLOCK 6 15 #define IPI_TLB 7 16 17 void init_secondary(int cpu); 18 void mpentry(void); 19 20 void ipi_all_but_self(u_int ipi); 21 void ipi_cpu(int cpu, u_int ipi); 22 void ipi_selected(cpuset_t cpus, u_int ipi); 23 24 /* PIC interface */ 25 void pic_ipi_send(cpuset_t cpus, u_int ipi); 26 void pic_ipi_clear(int ipi); 27 int pic_ipi_get(int arg); 28 29 /* Platform interface */ 30 void platform_mp_setmaxid(void); 31 int platform_mp_probe(void); 32 void platform_mp_start_ap(void); 33 void platform_mp_init_secondary(void); 34 35 void platform_ipi_send(cpuset_t cpus, u_int ipi); 36 37 /* global data in mp_machdep.c */ 38 extern struct pcb stoppcbs[]; 39 40 #endif /* !_MACHINE_SMP_H_ */ 41