xref: /freebsd/sys/arm/include/smp.h (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
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