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