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#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