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_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_TX39XX
 109        case CPU_TX3912:
 110        case CPU_TX3922:
 111        case CPU_TX3927:
 112#endif
 113
 114#ifdef CONFIG_SYS_HAS_CPU_VR41XX
 115        case CPU_VR41XX:
 116        case CPU_VR4111:
 117        case CPU_VR4121:
 118        case CPU_VR4122:
 119        case CPU_VR4131:
 120        case CPU_VR4133:
 121        case CPU_VR4181:
 122        case CPU_VR4181A:
 123#endif
 124
 125#ifdef CONFIG_SYS_HAS_CPU_R4300
 126        case CPU_R4300:
 127        case CPU_R4310:
 128#endif
 129
 130#ifdef CONFIG_SYS_HAS_CPU_R4X00
 131        case CPU_R4000PC:
 132        case CPU_R4000SC:
 133        case CPU_R4000MC:
 134        case CPU_R4200:
 135        case CPU_R4400PC:
 136        case CPU_R4400SC:
 137        case CPU_R4400MC:
 138        case CPU_R4600:
 139        case CPU_R4700:
 140        case CPU_R4640:
 141        case CPU_R4650:
 142#endif
 143
 144#ifdef CONFIG_SYS_HAS_CPU_TX49XX
 145        case CPU_TX49XX:
 146#endif
 147
 148#ifdef CONFIG_SYS_HAS_CPU_R5000
 149        case CPU_R5000:
 150#endif
 151
 152#ifdef CONFIG_SYS_HAS_CPU_R5500
 153        case CPU_R5500:
 154#endif
 155
 156#ifdef CONFIG_SYS_HAS_CPU_NEVADA
 157        case CPU_NEVADA:
 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