16fc729afSOlivier Houchard 26fc729afSOlivier Houchard #ifndef _MACHINE_SMP_H_ 36fc729afSOlivier Houchard #define _MACHINE_SMP_H_ 46fc729afSOlivier Houchard 5cf1a573fSOleksandr Tymoshenko #include <sys/_cpuset.h> 618f8f46eSOlivier Houchard #include <machine/pcb.h> 7cf1a573fSOleksandr Tymoshenko 8686450c8SIan Lepore enum { 9686450c8SIan Lepore IPI_AST, 10686450c8SIan Lepore IPI_PREEMPT, 11686450c8SIan Lepore IPI_RENDEZVOUS, 12686450c8SIan Lepore IPI_STOP, 13686450c8SIan Lepore IPI_STOP_HARD = IPI_STOP, /* These are synonyms on arm. */ 14686450c8SIan Lepore IPI_HARDCLOCK, 15*eefa6312SMichal Meloun IPI_TLB, /* Not used now, but keep it reserved. */ 16*eefa6312SMichal Meloun IPI_CACHE, /* Not used now, but keep it reserved. */ 172b3ad188SAdrian Chadd INTR_IPI_COUNT 18686450c8SIan Lepore }; 19cf1a573fSOleksandr Tymoshenko 20cf1a573fSOleksandr Tymoshenko void init_secondary(int cpu); 21aab6f7edSIan Lepore void mpentry(void); 22cf1a573fSOleksandr Tymoshenko 23cf1a573fSOleksandr Tymoshenko void ipi_all_but_self(u_int ipi); 24cf1a573fSOleksandr Tymoshenko void ipi_cpu(int cpu, u_int ipi); 25cf1a573fSOleksandr Tymoshenko void ipi_selected(cpuset_t cpus, u_int ipi); 26cf1a573fSOleksandr Tymoshenko 27cf1a573fSOleksandr Tymoshenko /* Platform interface */ 28cf1a573fSOleksandr Tymoshenko void platform_mp_setmaxid(void); 29cf1a573fSOleksandr Tymoshenko void platform_mp_start_ap(void); 30cf1a573fSOleksandr Tymoshenko 316fc729afSOlivier Houchard #endif /* !_MACHINE_SMP_H_ */ 32