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