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