xref: /freebsd/sys/arm/include/smp.h (revision 43a5ec4eb41567cc92586503212743d89686d78f)
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 enum {
10 	IPI_AST,
11 	IPI_PREEMPT,
12 	IPI_RENDEZVOUS,
13 	IPI_STOP,
14 	IPI_STOP_HARD = IPI_STOP, /* These are synonyms on arm. */
15 	IPI_HARDCLOCK,
16 	IPI_TLB,		/* Not used now, but keep it reserved. */
17 	IPI_CACHE,		/* Not used now, but keep it reserved. */
18 	INTR_IPI_COUNT
19 };
20 
21 void	init_secondary(int cpu);
22 void	mpentry(void);
23 
24 void	ipi_all_but_self(u_int ipi);
25 void	ipi_cpu(int cpu, u_int ipi);
26 void	ipi_selected(cpuset_t cpus, u_int ipi);
27 
28 /* Platform interface */
29 void	platform_mp_setmaxid(void);
30 void	platform_mp_start_ap(void);
31 
32 /* global data in mp_machdep.c */
33 extern struct pcb               stoppcbs[];
34 
35 #endif /* !_MACHINE_SMP_H_ */
36