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