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#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_MIPS64_R6 81 case CPU_I6400: 82#endif 83 84#ifdef CONFIG_SYS_HAS_CPU_R3000 85 case CPU_R2000: 86 case CPU_R3000: 87 case CPU_R3000A: 88 case CPU_R3041: 89 case CPU_R3051: 90 case CPU_R3052: 91 case CPU_R3081: 92 case CPU_R3081E: 93#endif 94 95#ifdef CONFIG_SYS_HAS_CPU_TX39XX 96 case CPU_TX3912: 97 case CPU_TX3922: 98 case CPU_TX3927: 99#endif 100 101#ifdef CONFIG_SYS_HAS_CPU_VR41XX 102 case CPU_VR41XX: 103 case CPU_VR4111: 104 case CPU_VR4121: 105 case CPU_VR4122: 106 case CPU_VR4131: 107 case CPU_VR4133: 108 case CPU_VR4181: 109 case CPU_VR4181A: 110#endif 111 112#ifdef CONFIG_SYS_HAS_CPU_R4300 113 case CPU_R4300: 114 case CPU_R4310: 115#endif 116 117#ifdef CONFIG_SYS_HAS_CPU_R4X00 118 case CPU_R4000PC: 119 case CPU_R4000SC: 120 case CPU_R4000MC: 121 case CPU_R4200: 122 case CPU_R4400PC: 123 case CPU_R4400SC: 124 case CPU_R4400MC: 125 case CPU_R4600: 126 case CPU_R4700: 127 case CPU_R4640: 128 case CPU_R4650: 129#endif 130 131#ifdef CONFIG_SYS_HAS_CPU_TX49XX 132 case CPU_TX49XX: 133#endif 134 135#ifdef CONFIG_SYS_HAS_CPU_R5000 136 case CPU_R5000: 137#endif 138 139#ifdef CONFIG_SYS_HAS_CPU_R5432 140 case CPU_R5432: 141#endif 142 143#ifdef CONFIG_SYS_HAS_CPU_R5500 144 case CPU_R5500: 145#endif 146 147#ifdef CONFIG_SYS_HAS_CPU_R6000 148 case CPU_R6000: 149 case CPU_R6000A: 150#endif 151 152#ifdef CONFIG_SYS_HAS_CPU_NEVADA 153 case CPU_NEVADA: 154#endif 155 156#ifdef CONFIG_SYS_HAS_CPU_R8000 157 case CPU_R8000: 158#endif 159 160#ifdef CONFIG_SYS_HAS_CPU_R10000 161 case CPU_R10000: 162 case CPU_R12000: 163 case CPU_R14000: 164 case CPU_R16000: 165#endif 166#ifdef CONFIG_SYS_HAS_CPU_RM7000 167 case CPU_RM7000: 168 case CPU_SR71000: 169#endif 170#ifdef CONFIG_SYS_HAS_CPU_SB1 171 case CPU_SB1: 172 case CPU_SB1A: 173#endif 174#ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON 175 case CPU_CAVIUM_OCTEON: 176 case CPU_CAVIUM_OCTEON_PLUS: 177 case CPU_CAVIUM_OCTEON2: 178 case CPU_CAVIUM_OCTEON3: 179#endif 180 181#if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \ 182 defined (CONFIG_SYS_HAS_CPU_MIPS32_R1) 183 case CPU_BMIPS32: 184 case CPU_BMIPS3300: 185#endif 186 187#ifdef CONFIG_SYS_HAS_CPU_BMIPS4350 188 case CPU_BMIPS4350: 189#endif 190 191#ifdef CONFIG_SYS_HAS_CPU_BMIPS4380 192 case CPU_BMIPS4380: 193#endif 194 195#ifdef CONFIG_SYS_HAS_CPU_BMIPS5000 196 case CPU_BMIPS5000: 197#endif 198 199#ifdef CONFIG_SYS_HAS_CPU_XLP 200 case CPU_XLP: 201#endif 202 203#ifdef CONFIG_SYS_HAS_CPU_XLR 204 case CPU_XLR: 205#endif 206 break; 207 default: 208 unreachable(); 209 } 210 211 return cpu_type; 212} 213 214static inline int __pure current_cpu_type(void) 215{ 216 const int cpu_type = current_cpu_data.cputype; 217 218 return __get_cpu_type(cpu_type); 219} 220 221static inline int __pure boot_cpu_type(void) 222{ 223 const int cpu_type = cpu_data[0].cputype; 224 225 return __get_cpu_type(cpu_type); 226} 227 228#endif /* __ASM_CPU_TYPE_H */ 229