smp.h revision 148807
166458Sdfr/*
266458Sdfr * $FreeBSD: head/sys/ia64/include/smp.h 148807 2005-08-06 20:28:19Z marcel $
366458Sdfr */
466458Sdfr#ifndef _MACHINE_SMP_H_
566458Sdfr#define _MACHINE_SMP_H_
666458Sdfr
766458Sdfr#ifdef _KERNEL
866458Sdfr
976078Sjhb/*
1085656Smarcel * Interprocessor interrupts for SMP. The following values are indices
1185656Smarcel * into the IPI vector table. The SAL gives us the vector used for AP
1288691Smarcel * wake-up. We base the other vectors on that. Keep IPI_AP_WAKEUP at
13147322Smarcel * index 0. See sal.c for details.
1476078Sjhb */
1596442Smarcel/* Architecture specific IPIs. */
1696442Smarcel#define	IPI_AP_WAKEUP		0
17115084Smarcel#define	IPI_HIGH_FP		1
1896442Smarcel#define	IPI_MCA_CMCV		2
19115084Smarcel#define	IPI_MCA_RENDEZ		3
20115084Smarcel#define	IPI_TEST		4
2196442Smarcel/* Machine independent IPIs. */
22115084Smarcel#define	IPI_AST			5
23115084Smarcel#define	IPI_RENDEZVOUS		6
24115084Smarcel#define	IPI_STOP		7
25147322Smarcel#define	IPI_PREEMPT		8
2666458Sdfr
27147322Smarcel#define	IPI_COUNT		9
2885656Smarcel
2966458Sdfr#ifndef LOCORE
3066458Sdfr
31148807Smarcelstruct pcpu;
32148807Smarcel
3396442Smarcelextern int ipi_vector[];
3466458Sdfr
3585656Smarcelvoid	ipi_all(int ipi);
3685656Smarcelvoid	ipi_all_but_self(int ipi);
37148807Smarcelvoid	ipi_selected(cpumask_t cpus, int ipi);
3885656Smarcelvoid	ipi_self(int ipi);
39148807Smarcelvoid	ipi_send(struct pcpu *, int ipi);
4066458Sdfr
4166458Sdfr#endif /* !LOCORE */
4266458Sdfr#endif /* _KERNEL */
4376078Sjhb#endif /* !_MACHINE_SMP_H */
44