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 --- |