1/*
| 1/*
|
2 * $FreeBSD: head/sys/ia64/include/smp.h 85210 2001-10-20 03:33:07Z marcel $
| 2 * $FreeBSD: head/sys/ia64/include/smp.h 85656 2001-10-29 02:16:02Z marcel $
|
3 */ 4#ifndef _MACHINE_SMP_H_ 5#define _MACHINE_SMP_H_ 6 7#ifdef _KERNEL 8 9/*
| 3 */ 4#ifndef _MACHINE_SMP_H_ 5#define _MACHINE_SMP_H_ 6 7#ifdef _KERNEL 8 9/*
|
10 * Interprocessor interrupts for SMP.
| 10 * Interprocessor interrupts for SMP. The following values are indices 11 * into the IPI vector table. The SAL gives us the vector used for AP 12 * wake-up. Keep the IPI_AP_WAKEUP at index 0.
|
11 */
| 13 */
|
12#define IPI_INVLTLB 0x0001 13#define IPI_RENDEZVOUS 0x0002 14#define IPI_AST 0x0004 15#define IPI_CHECKSTATE 0x0008 16#define IPI_STOP 0x0010
| 14#define IPI_AP_WAKEUP 0 15#define IPI_AST 1 16#define IPI_CHECKSTATE 2 17#define IPI_INVLTLB 3 18#define IPI_RENDEZVOUS 4 19#define IPI_STOP 5
|
17
| 20
|
| 21#define IPI_COUNT 6 22
|
18#ifndef LOCORE 19
| 23#ifndef LOCORE 24
|
20/* global data in mp_machdep.c */ 21extern volatile u_int checkstate_probed_cpus; 22extern volatile u_int checkstate_need_ast; 23extern volatile u_int resched_cpus;
| 25extern int mp_hardware; 26extern int mp_ipi_vector[];
|
24
| 27
|
25void ipi_all(u_int64_t ipi); 26void ipi_all_but_self(u_int64_t ipi); 27void ipi_selected(u_int cpus, u_int64_t ipi); 28void ipi_self(u_int64_t ipi); 29void smp_init_secondary(void);
| 28void ipi_all(int ipi); 29void ipi_all_but_self(int ipi); 30void ipi_selected(u_int64_t cpus, int ipi); 31void ipi_self(int ipi);
|
30 31#endif /* !LOCORE */ 32#endif /* _KERNEL */ 33#endif /* !_MACHINE_SMP_H */
| 32 33#endif /* !LOCORE */ 34#endif /* _KERNEL */ 35#endif /* !_MACHINE_SMP_H */
|