]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - sys/ia64/include/smp.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / sys / ia64 / include / smp.h
1 /*
2  * $FreeBSD$
3  */
4 #ifndef _MACHINE_SMP_H_
5 #define _MACHINE_SMP_H_
6
7 #ifdef _KERNEL
8
9 #define IPI_AST                 ia64_ipi_ast
10 #define IPI_HARDCLOCK           ia64_ipi_hardclock
11 #define IPI_PREEMPT             ia64_ipi_preempt
12 #define IPI_RENDEZVOUS          ia64_ipi_rndzvs
13 #define IPI_STOP                ia64_ipi_stop
14 #define IPI_STOP_HARD           ia64_ipi_nmi
15
16 #ifndef LOCORE
17
18 #include <sys/_cpuset.h>
19
20 struct pcpu;
21
22 struct ia64_ap_state {
23         uint64_t        as_trace;
24         uint64_t        as_pgtbl_pte;
25         uint64_t        as_pgtbl_itir;
26         uint64_t        as_text_va;
27         uint64_t        as_text_pte;
28         uint64_t        as_text_itir;
29         uint64_t        as_data_va;
30         uint64_t        as_data_pte;
31         uint64_t        as_data_itir;
32         void            *as_kstack;
33         void            *as_kstack_top;
34         struct pcpu     *as_pcpu;
35         volatile int    as_delay;
36         volatile u_int  as_awake;
37         volatile u_int  as_spin;
38 };
39
40 extern int ia64_ipi_ast;
41 extern int ia64_ipi_hardclock;
42 extern int ia64_ipi_highfp;
43 extern int ia64_ipi_nmi;
44 extern int ia64_ipi_preempt;
45 extern int ia64_ipi_rndzvs;
46 extern int ia64_ipi_stop;
47 extern int ia64_ipi_wakeup;
48
49 void    ipi_all_but_self(int ipi);
50 void    ipi_cpu(int cpu, u_int ipi);
51 void    ipi_selected(cpuset_t cpus, int ipi);
52 void    ipi_send(struct pcpu *, int ipi);
53
54 #endif /* !LOCORE */
55 #endif /* _KERNEL */
56 #endif /* !_MACHINE_SMP_H */