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