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 #ifdef CONFIG_SYS_HAS_CPU_LOONGSON1B 28 case CPU_LOONGSON1: 29 #endif 30 31 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R1 32 case CPU_4KC: 33 case CPU_ALCHEMY: 34 case CPU_PR4450: 35 #endif 36 37 #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R1) || \ 38 defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) 39 case CPU_4KEC: 40 case CPU_JZRISC: 41 #endif 42 43 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R2 44 case CPU_4KSC: 45 case CPU_24K: 46 case CPU_34K: 47 case CPU_1004K: 48 case CPU_74K: 49 case CPU_M14KC: 50 case CPU_M14KEC: 51 case CPU_INTERAPTIV: 52 case CPU_PROAPTIV: 53 case CPU_P5600: 54 case CPU_M5150: 55 #endif 56 57 #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) || \ 58 defined(CONFIG_SYS_HAS_CPU_MIPS32_R6) || \ 59 defined(CONFIG_SYS_HAS_CPU_MIPS64_R2) || \ 60 defined(CONFIG_SYS_HAS_CPU_MIPS64_R6) 61 case CPU_QEMU_GENERIC: 62 #endif 63 64 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R1 65 case CPU_5KC: 66 case CPU_5KE: 67 case CPU_20KC: 68 case CPU_25KF: 69 case CPU_SB1: 70 case CPU_SB1A: 71 #endif 72 73 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R2 74 /* 75 * All MIPS64 R2 processors have their own special symbols. That is, 76 * there currently is no pure R2 core 77 */ 78 #endif 79 80 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R6 81 case CPU_M6250: 82 #endif 83 84 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6 85 case CPU_I6400: 86 case CPU_P6600: 87 #endif 88 89 #ifdef CONFIG_SYS_HAS_CPU_R3000 90 case CPU_R2000: 91 case CPU_R3000: 92 case CPU_R3000A: 93 case CPU_R3041: 94 case CPU_R3051: 95 case CPU_R3052: 96 case CPU_R3081: 97 case CPU_R3081E: 98 #endif 99 100 #ifdef CONFIG_SYS_HAS_CPU_TX39XX 101 case CPU_TX3912: 102 case CPU_TX3922: 103 case CPU_TX3927: 104 #endif 105 106 #ifdef CONFIG_SYS_HAS_CPU_VR41XX 107 case CPU_VR41XX: 108 case CPU_VR4111: 109 case CPU_VR4121: 110 case CPU_VR4122: 111 case CPU_VR4131: 112 case CPU_VR4133: 113 case CPU_VR4181: 114 case CPU_VR4181A: 115 #endif 116 117 #ifdef CONFIG_SYS_HAS_CPU_R4300 118 case CPU_R4300: 119 case CPU_R4310: 120 #endif 121 122 #ifdef CONFIG_SYS_HAS_CPU_R4X00 123 case CPU_R4000PC: 124 case CPU_R4000SC: 125 case CPU_R4000MC: 126 case CPU_R4200: 127 case CPU_R4400PC: 128 case CPU_R4400SC: 129 case CPU_R4400MC: 130 case CPU_R4600: 131 case CPU_R4700: 132 case CPU_R4640: 133 case CPU_R4650: 134 #endif 135 136 #ifdef CONFIG_SYS_HAS_CPU_TX49XX 137 case CPU_TX49XX: 138 #endif 139 140 #ifdef CONFIG_SYS_HAS_CPU_R5000 141 case CPU_R5000: 142 #endif 143 144 #ifdef CONFIG_SYS_HAS_CPU_R5432 145 case CPU_R5432: 146 #endif 147 148 #ifdef CONFIG_SYS_HAS_CPU_R5500 149 case CPU_R5500: 150 #endif 151 152 #ifdef CONFIG_SYS_HAS_CPU_R6000 153 case CPU_R6000: 154 case CPU_R6000A: 155 #endif 156 157 #ifdef CONFIG_SYS_HAS_CPU_NEVADA 158 case CPU_NEVADA: 159 #endif 160 161 #ifdef CONFIG_SYS_HAS_CPU_R8000 162 case CPU_R8000: 163 #endif 164 165 #ifdef CONFIG_SYS_HAS_CPU_R10000 166 case CPU_R10000: 167 case CPU_R12000: 168 case CPU_R14000: 169 case CPU_R16000: 170 #endif 171 #ifdef CONFIG_SYS_HAS_CPU_RM7000 172 case CPU_RM7000: 173 case CPU_SR71000: 174 #endif 175 #ifdef CONFIG_SYS_HAS_CPU_SB1 176 case CPU_SB1: 177 case CPU_SB1A: 178 #endif 179 #ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON 180 case CPU_CAVIUM_OCTEON: 181 case CPU_CAVIUM_OCTEON_PLUS: 182 case CPU_CAVIUM_OCTEON2: 183 case CPU_CAVIUM_OCTEON3: 184 #endif 185 186 #if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \ 187 defined (CONFIG_SYS_HAS_CPU_MIPS32_R1) 188 case CPU_BMIPS32: 189 case CPU_BMIPS3300: 190 #endif 191 192 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4350 193 case CPU_BMIPS4350: 194 #endif 195 196 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4380 197 case CPU_BMIPS4380: 198 #endif 199 200 #ifdef CONFIG_SYS_HAS_CPU_BMIPS5000 201 case CPU_BMIPS5000: 202 #endif 203 204 #ifdef CONFIG_SYS_HAS_CPU_XLP 205 case CPU_XLP: 206 #endif 207 208 #ifdef CONFIG_SYS_HAS_CPU_XLR 209 case CPU_XLR: 210 #endif 211 break; 212 default: 213 unreachable(); 214 } 215 216 return cpu_type; 217 } 218 219 static inline int __pure current_cpu_type(void) 220 { 221 const int cpu_type = current_cpu_data.cputype; 222 223 return __get_cpu_type(cpu_type); 224 } 225 226 static inline int __pure boot_cpu_type(void) 227 { 228 const int cpu_type = cpu_data[0].cputype; 229 230 return __get_cpu_type(cpu_type); 231 } 232 233 #endif /* __ASM_CPU_TYPE_H */ 234