Deleted Added
full compact
smp.h (92199) smp.h (97001)
1/*-
2 * Copyright (c) 2001 Jake Burkholder.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2001 Jake Burkholder.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/sparc64/include/smp.h 92199 2002-03-13 03:43:00Z jake $
26 * $FreeBSD: head/sys/sparc64/include/smp.h 97001 2002-05-20 16:30:47Z jake $
27 */
28
29#ifndef _MACHINE_SMP_H_
30#define _MACHINE_SMP_H_
31
32#define CPU_CLKSYNC 1
33#define CPU_INIT 2
34#define CPU_BOOTSTRAP 3

--- 17 unchanged lines hidden (view full) ---

52 u_int csa_mid;
53 u_int csa_state;
54 vm_offset_t csa_pcpu;
55 u_long csa_tick;
56 u_long csa_ver;
57 struct tte csa_ttes[PCPU_PAGES];
58};
59
27 */
28
29#ifndef _MACHINE_SMP_H_
30#define _MACHINE_SMP_H_
31
32#define CPU_CLKSYNC 1
33#define CPU_INIT 2
34#define CPU_BOOTSTRAP 3

--- 17 unchanged lines hidden (view full) ---

52 u_int csa_mid;
53 u_int csa_state;
54 vm_offset_t csa_pcpu;
55 u_long csa_tick;
56 u_long csa_ver;
57 struct tte csa_ttes[PCPU_PAGES];
58};
59
60struct ipi_cache_args {
61 u_int ica_mask;
62 u_long ica_pa;
63};
64
60struct ipi_tlb_args {
61 u_int ita_mask;
62 u_long ita_tlb;
63 struct pmap *ita_pmap;
64 u_long ita_start;
65 u_long ita_end;
66};
67#define ita_va ita_start

--- 7 unchanged lines hidden (view full) ---

75void cpu_ipi_send(u_int mid, u_long d0, u_long d1, u_long d2);
76
77void ipi_selected(u_int cpus, u_int ipi);
78void ipi_all(u_int ipi);
79void ipi_all_but_self(u_int ipi);
80
81vm_offset_t mp_tramp_alloc(void);
82
65struct ipi_tlb_args {
66 u_int ita_mask;
67 u_long ita_tlb;
68 struct pmap *ita_pmap;
69 u_long ita_start;
70 u_long ita_end;
71};
72#define ita_va ita_start

--- 7 unchanged lines hidden (view full) ---

80void cpu_ipi_send(u_int mid, u_long d0, u_long d1, u_long d2);
81
82void ipi_selected(u_int cpus, u_int ipi);
83void ipi_all(u_int ipi);
84void ipi_all_but_self(u_int ipi);
85
86vm_offset_t mp_tramp_alloc(void);
87
88extern struct ipi_cache_args ipi_cache_args;
83extern struct ipi_level_args ipi_level_args;
84extern struct ipi_tlb_args ipi_tlb_args;
85
86extern vm_offset_t mp_tramp;
87extern char *mp_tramp_code;
88extern u_long mp_tramp_code_len;
89extern u_long mp_tramp_tlb_slots;
90extern u_long mp_tramp_func;
91
92extern void mp_startup(void);
93
89extern struct ipi_level_args ipi_level_args;
90extern struct ipi_tlb_args ipi_tlb_args;
91
92extern vm_offset_t mp_tramp;
93extern char *mp_tramp_code;
94extern u_long mp_tramp_code_len;
95extern u_long mp_tramp_tlb_slots;
96extern u_long mp_tramp_func;
97
98extern void mp_startup(void);
99
100extern char tl_ipi_dcache_page_inval[];
101extern char tl_ipi_icache_page_inval[];
94extern char tl_ipi_level[];
95extern char tl_ipi_test[];
96extern char tl_ipi_tlb_context_demap[];
97extern char tl_ipi_tlb_page_demap[];
98extern char tl_ipi_tlb_range_demap[];
99
100#ifdef SMP
101
102extern char tl_ipi_level[];
103extern char tl_ipi_test[];
104extern char tl_ipi_tlb_context_demap[];
105extern char tl_ipi_tlb_page_demap[];
106extern char tl_ipi_tlb_range_demap[];
107
108#ifdef SMP
109
110static __inline void *
111ipi_dcache_page_inval(vm_offset_t pa)
112{
113 struct ipi_cache_args *ica;
114
115 if (smp_cpus == 1)
116 return (NULL);
117 ica = &ipi_cache_args;
118 ica->ica_mask = all_cpus;
119 ica->ica_pa = pa;
120 cpu_ipi_selected(all_cpus, 0, (u_long)tl_ipi_dcache_page_inval,
121 (u_long)ica);
122 return (&ica->ica_mask);
123}
124
125static __inline void *
126ipi_icache_page_inval(vm_offset_t pa)
127{
128 struct ipi_cache_args *ica;
129
130 if (smp_cpus == 1)
131 return (NULL);
132 ica = &ipi_cache_args;
133 ica->ica_mask = all_cpus;
134 ica->ica_pa = pa;
135 cpu_ipi_selected(all_cpus, 0, (u_long)tl_ipi_icache_page_inval,
136 (u_long)ica);
137 return (&ica->ica_mask);
138}
139
102#ifdef _MACHINE_PMAP_H_
103
104static __inline void *
105ipi_tlb_context_demap(struct pmap *pm)
106{
107 struct ipi_tlb_args *ita;
108 u_int cpus;
109

--- 59 unchanged lines hidden (view full) ---

169 }
170}
171
172#endif
173
174#else
175
176static __inline void *
140#ifdef _MACHINE_PMAP_H_
141
142static __inline void *
143ipi_tlb_context_demap(struct pmap *pm)
144{
145 struct ipi_tlb_args *ita;
146 u_int cpus;
147

--- 59 unchanged lines hidden (view full) ---

207 }
208}
209
210#endif
211
212#else
213
214static __inline void *
215ipi_dcache_page_inval(vm_offset_t pa)
216{
217 return (NULL);
218}
219
220static __inline void *
221ipi_icache_page_inval(vm_offset_t pa)
222{
223 return (NULL);
224}
225
226static __inline void *
177ipi_tlb_context_demap(struct pmap *pm)
178{
179 return (NULL);
180}
181
182static __inline void *
183ipi_tlb_page_demap(u_int tlb, struct pmap *pm, vm_offset_t va)
184{

--- 19 unchanged lines hidden ---
227ipi_tlb_context_demap(struct pmap *pm)
228{
229 return (NULL);
230}
231
232static __inline void *
233ipi_tlb_page_demap(u_int tlb, struct pmap *pm, vm_offset_t va)
234{

--- 19 unchanged lines hidden ---