16fc729afSOlivier Houchard /* $FreeBSD$ */ 26fc729afSOlivier Houchard 36fc729afSOlivier Houchard #ifndef _MACHINE_SMP_H_ 46fc729afSOlivier Houchard #define _MACHINE_SMP_H_ 56fc729afSOlivier Houchard 6*cf1a573fSOleksandr Tymoshenko #include <sys/_cpuset.h> 7*cf1a573fSOleksandr Tymoshenko 8*cf1a573fSOleksandr Tymoshenko #define IPI_AST 0 9*cf1a573fSOleksandr Tymoshenko #define IPI_PREEMPT 2 10*cf1a573fSOleksandr Tymoshenko #define IPI_RENDEZVOUS 3 11*cf1a573fSOleksandr Tymoshenko #define IPI_STOP 4 12*cf1a573fSOleksandr Tymoshenko #define IPI_STOP_HARD 5 13*cf1a573fSOleksandr Tymoshenko #define IPI_HARDCLOCK 6 14*cf1a573fSOleksandr Tymoshenko #define IPI_TLB 7 15*cf1a573fSOleksandr Tymoshenko 16*cf1a573fSOleksandr Tymoshenko void init_secondary(int cpu); 17*cf1a573fSOleksandr Tymoshenko 18*cf1a573fSOleksandr Tymoshenko void ipi_all_but_self(u_int ipi); 19*cf1a573fSOleksandr Tymoshenko void ipi_cpu(int cpu, u_int ipi); 20*cf1a573fSOleksandr Tymoshenko void ipi_selected(cpuset_t cpus, u_int ipi); 21*cf1a573fSOleksandr Tymoshenko 22*cf1a573fSOleksandr Tymoshenko /* PIC interface */ 23*cf1a573fSOleksandr Tymoshenko void pic_ipi_send(cpuset_t cpus, u_int ipi); 24*cf1a573fSOleksandr Tymoshenko void pic_ipi_clear(int ipi); 25*cf1a573fSOleksandr Tymoshenko int pic_ipi_get(int arg); 26*cf1a573fSOleksandr Tymoshenko 27*cf1a573fSOleksandr Tymoshenko /* Platform interface */ 28*cf1a573fSOleksandr Tymoshenko void platform_mp_setmaxid(void); 29*cf1a573fSOleksandr Tymoshenko int platform_mp_probe(void); 30*cf1a573fSOleksandr Tymoshenko void platform_mp_start_ap(void); 31*cf1a573fSOleksandr Tymoshenko void platform_mp_init_secondary(void); 32*cf1a573fSOleksandr Tymoshenko 33*cf1a573fSOleksandr Tymoshenko void platform_ipi_send(cpuset_t cpus, u_int ipi); 34*cf1a573fSOleksandr Tymoshenko 356fc729afSOlivier Houchard #endif /* !_MACHINE_SMP_H_ */ 36