linux/arch/mips/include/asm/cpu-type.h
<<
>>
Prefs
   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