GNU Linux-libre 4.14.266-gnu1
[releases.git] / arch / mips / include / asm / cpu-type.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 2003, 2004 Ralf Baechle
7  * Copyright (C) 2004  Maciej W. Rozycki
8  */
9 #ifndef __ASM_CPU_TYPE_H
10 #define __ASM_CPU_TYPE_H
11
12 #include <linux/smp.h>
13 #include <linux/compiler.h>
14
15 static inline int __pure __get_cpu_type(const int cpu_type)
16 {
17         switch (cpu_type) {
18 #if defined(CONFIG_SYS_HAS_CPU_LOONGSON2E) || \
19     defined(CONFIG_SYS_HAS_CPU_LOONGSON2F)
20         case CPU_LOONGSON2:
21 #endif
22
23 #ifdef CONFIG_SYS_HAS_CPU_LOONGSON3
24         case CPU_LOONGSON3:
25 #endif
26
27 #if defined(CONFIG_SYS_HAS_CPU_LOONGSON1B) || \
28     defined(CONFIG_SYS_HAS_CPU_LOONGSON1C)
29         case CPU_LOONGSON1:
30 #endif
31
32 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R1
33         case CPU_4KC:
34         case CPU_ALCHEMY:
35         case CPU_PR4450:
36 #endif
37
38 #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R1) || \
39     defined(CONFIG_SYS_HAS_CPU_MIPS32_R2)
40         case CPU_4KEC:
41         case CPU_JZRISC:
42 #endif
43
44 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R2
45         case CPU_4KSC:
46         case CPU_24K:
47         case CPU_34K:
48         case CPU_1004K:
49         case CPU_74K:
50         case CPU_1074K:
51         case CPU_M14KC:
52         case CPU_M14KEC:
53         case CPU_INTERAPTIV:
54         case CPU_PROAPTIV:
55         case CPU_P5600:
56         case CPU_M5150:
57 #endif
58
59 #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) || \
60     defined(CONFIG_SYS_HAS_CPU_MIPS32_R6) || \
61     defined(CONFIG_SYS_HAS_CPU_MIPS64_R2) || \
62     defined(CONFIG_SYS_HAS_CPU_MIPS64_R6)
63         case CPU_QEMU_GENERIC:
64 #endif
65
66 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R1
67         case CPU_5KC:
68         case CPU_5KE:
69         case CPU_20KC:
70         case CPU_25KF:
71         case CPU_SB1:
72         case CPU_SB1A:
73 #endif
74
75 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R2
76         /*
77          * All MIPS64 R2 processors have their own special symbols.  That is,
78          * there currently is no pure R2 core
79          */
80 #endif
81
82 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R6
83         case CPU_M6250:
84 #endif
85
86 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6
87         case CPU_I6400:
88         case CPU_I6500:
89         case CPU_P6600:
90 #endif
91
92 #ifdef CONFIG_SYS_HAS_CPU_R3000
93         case CPU_R2000:
94         case CPU_R3000:
95         case CPU_R3000A:
96         case CPU_R3041:
97         case CPU_R3051:
98         case CPU_R3052:
99         case CPU_R3081:
100         case CPU_R3081E:
101 #endif
102
103 #ifdef CONFIG_SYS_HAS_CPU_TX39XX
104         case CPU_TX3912:
105         case CPU_TX3922:
106         case CPU_TX3927:
107 #endif
108
109 #ifdef CONFIG_SYS_HAS_CPU_VR41XX
110         case CPU_VR41XX:
111         case CPU_VR4111:
112         case CPU_VR4121:
113         case CPU_VR4122:
114         case CPU_VR4131:
115         case CPU_VR4133:
116         case CPU_VR4181:
117         case CPU_VR4181A:
118 #endif
119
120 #ifdef CONFIG_SYS_HAS_CPU_R4300
121         case CPU_R4300:
122         case CPU_R4310:
123 #endif
124
125 #ifdef CONFIG_SYS_HAS_CPU_R4X00
126         case CPU_R4000PC:
127         case CPU_R4000SC:
128         case CPU_R4000MC:
129         case CPU_R4200:
130         case CPU_R4400PC:
131         case CPU_R4400SC:
132         case CPU_R4400MC:
133         case CPU_R4600:
134         case CPU_R4700:
135         case CPU_R4640:
136         case CPU_R4650:
137 #endif
138
139 #ifdef CONFIG_SYS_HAS_CPU_TX49XX
140         case CPU_TX49XX:
141 #endif
142
143 #ifdef CONFIG_SYS_HAS_CPU_R5000
144         case CPU_R5000:
145 #endif
146
147 #ifdef CONFIG_SYS_HAS_CPU_R5432
148         case CPU_R5432:
149 #endif
150
151 #ifdef CONFIG_SYS_HAS_CPU_R5500
152         case CPU_R5500:
153 #endif
154
155 #ifdef CONFIG_SYS_HAS_CPU_NEVADA
156         case CPU_NEVADA:
157 #endif
158
159 #ifdef CONFIG_SYS_HAS_CPU_R8000
160         case CPU_R8000:
161 #endif
162
163 #ifdef CONFIG_SYS_HAS_CPU_R10000
164         case CPU_R10000:
165         case CPU_R12000:
166         case CPU_R14000:
167         case CPU_R16000:
168 #endif
169 #ifdef CONFIG_SYS_HAS_CPU_RM7000
170         case CPU_RM7000:
171         case CPU_SR71000:
172 #endif
173 #ifdef CONFIG_SYS_HAS_CPU_SB1
174         case CPU_SB1:
175         case CPU_SB1A:
176 #endif
177 #ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON
178         case CPU_CAVIUM_OCTEON:
179         case CPU_CAVIUM_OCTEON_PLUS:
180         case CPU_CAVIUM_OCTEON2:
181         case CPU_CAVIUM_OCTEON3:
182 #endif
183
184 #if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \
185         defined (CONFIG_SYS_HAS_CPU_MIPS32_R1)
186         case CPU_BMIPS32:
187         case CPU_BMIPS3300:
188 #endif
189
190 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4350
191         case CPU_BMIPS4350:
192 #endif
193
194 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4380
195         case CPU_BMIPS4380:
196 #endif
197
198 #ifdef CONFIG_SYS_HAS_CPU_BMIPS5000
199         case CPU_BMIPS5000:
200 #endif
201
202 #ifdef CONFIG_SYS_HAS_CPU_XLP
203         case CPU_XLP:
204 #endif
205
206 #ifdef CONFIG_SYS_HAS_CPU_XLR
207         case CPU_XLR:
208 #endif
209                 break;
210         default:
211                 unreachable();
212         }
213
214         return cpu_type;
215 }
216
217 static inline int __pure current_cpu_type(void)
218 {
219         const int cpu_type = current_cpu_data.cputype;
220
221         return __get_cpu_type(cpu_type);
222 }
223
224 static inline int __pure boot_cpu_type(void)
225 {
226         const int cpu_type = cpu_data[0].cputype;
227
228         return __get_cpu_type(cpu_type);
229 }
230
231 #endif /* __ASM_CPU_TYPE_H */