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