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 __get_cpu_type(const int cpu_type)15static 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_LOONGSON2EF: 21 #endif 22 23 #ifdef CONFIG_SYS_HAS_CPU_LOONGSON64 24 case CPU_LOONGSON64: 25 #endif 26 27 #if defined(CONFIG_SYS_HAS_CPU_LOONGSON1B) || \ 28 defined(CONFIG_SYS_HAS_CPU_LOONGSON1C) 29 case CPU_LOONGSON32: 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_XBURST: 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 #endif 56 57 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R5 58 case CPU_M5150: 59 case CPU_P5600: 60 #endif 61 62 #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) || \ 63 defined(CONFIG_SYS_HAS_CPU_MIPS32_R5) || \ 64 defined(CONFIG_SYS_HAS_CPU_MIPS32_R6) || \ 65 defined(CONFIG_SYS_HAS_CPU_MIPS64_R2) || \ 66 defined(CONFIG_SYS_HAS_CPU_MIPS64_R5) || \ 67 defined(CONFIG_SYS_HAS_CPU_MIPS64_R6) 68 case CPU_QEMU_GENERIC: 69 #endif 70 71 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R1 72 case CPU_5KC: 73 case CPU_5KE: 74 case CPU_20KC: 75 case CPU_25KF: 76 case CPU_SB1: 77 case CPU_SB1A: 78 #endif 79 80 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R2 81 /* 82 * All MIPS64 R2 processors have their own special symbols. That is, 83 * there currently is no pure R2 core 84 */ 85 #endif 86 87 #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R6 88 case CPU_M6250: 89 #endif 90 91 #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6 92 case CPU_I6400: 93 case CPU_I6500: 94 case CPU_P6600: 95 #endif 96 97 #ifdef CONFIG_SYS_HAS_CPU_R3000 98 case CPU_R2000: 99 case CPU_R3000: 100 case CPU_R3000A: 101 case CPU_R3041: 102 case CPU_R3051: 103 case CPU_R3052: 104 case CPU_R3081: 105 case CPU_R3081E: 106 #endif 107 108 #ifdef CONFIG_SYS_HAS_CPU_R4300 109 case CPU_R4300: 110 case CPU_R4310: 111 #endif 112 113 #ifdef CONFIG_SYS_HAS_CPU_R4X00 114 case CPU_R4000PC: 115 case CPU_R4000SC: 116 case CPU_R4000MC: 117 case CPU_R4200: 118 case CPU_R4400PC: 119 case CPU_R4400SC: 120 case CPU_R4400MC: 121 case CPU_R4600: 122 case CPU_R4700: 123 case CPU_R4640: 124 case CPU_R4650: 125 #endif 126 127 #ifdef CONFIG_SYS_HAS_CPU_TX49XX 128 case CPU_TX49XX: 129 #endif 130 131 #ifdef CONFIG_SYS_HAS_CPU_R5000 132 case CPU_R5000: 133 #endif 134 135 #ifdef CONFIG_SYS_HAS_CPU_R5500 136 case CPU_R5500: 137 #endif 138 139 #ifdef CONFIG_SYS_HAS_CPU_NEVADA 140 case CPU_NEVADA: 141 #endif 142 143 #ifdef CONFIG_SYS_HAS_CPU_R10000 144 case CPU_R10000: 145 case CPU_R12000: 146 case CPU_R14000: 147 case CPU_R16000: 148 #endif 149 #ifdef CONFIG_SYS_HAS_CPU_RM7000 150 case CPU_RM7000: 151 case CPU_SR71000: 152 #endif 153 #ifdef CONFIG_SYS_HAS_CPU_SB1 154 case CPU_SB1: 155 case CPU_SB1A: 156 #endif 157 #ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON 158 case CPU_CAVIUM_OCTEON: 159 case CPU_CAVIUM_OCTEON_PLUS: 160 case CPU_CAVIUM_OCTEON2: 161 case CPU_CAVIUM_OCTEON3: 162 #endif 163 164 #if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \ 165 defined (CONFIG_SYS_HAS_CPU_MIPS32_R1) 166 case CPU_BMIPS32: 167 case CPU_BMIPS3300: 168 #endif 169 170 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4350 171 case CPU_BMIPS4350: 172 #endif 173 174 #ifdef CONFIG_SYS_HAS_CPU_BMIPS4380 175 case CPU_BMIPS4380: 176 #endif 177 178 #ifdef CONFIG_SYS_HAS_CPU_BMIPS5000 179 case CPU_BMIPS5000: 180 #endif 181 break; 182 default: 183 unreachable(); 184 } 185 186 return cpu_type; 187 } 188 current_cpu_type(void)189static inline int __pure current_cpu_type(void) 190 { 191 const int cpu_type = current_cpu_data.cputype; 192 193 return __get_cpu_type(cpu_type); 194 } 195 boot_cpu_type(void)196static inline int __pure boot_cpu_type(void) 197 { 198 const int cpu_type = cpu_data[0].cputype; 199 200 return __get_cpu_type(cpu_type); 201 } 202 203 #endif /* __ASM_CPU_TYPE_H */ 204