169f24d17SRalf Baechle /* 269f24d17SRalf Baechle * This file is subject to the terms and conditions of the GNU General Public 369f24d17SRalf Baechle * License. See the file "COPYING" in the main directory of this archive 469f24d17SRalf Baechle * for more details. 569f24d17SRalf Baechle * 669f24d17SRalf Baechle * Copyright (C) 2003, 2004 Ralf Baechle 769f24d17SRalf Baechle * Copyright (C) 2004 Maciej W. Rozycki 869f24d17SRalf Baechle */ 969f24d17SRalf Baechle #ifndef __ASM_CPU_TYPE_H 1069f24d17SRalf Baechle #define __ASM_CPU_TYPE_H 1169f24d17SRalf Baechle 1269f24d17SRalf Baechle #include <linux/smp.h> 1369f24d17SRalf Baechle #include <linux/compiler.h> 1469f24d17SRalf Baechle 1569f24d17SRalf Baechle static inline int __pure __get_cpu_type(const int cpu_type) 1669f24d17SRalf Baechle { 1769f24d17SRalf Baechle switch (cpu_type) { 1869f24d17SRalf Baechle #if defined(CONFIG_SYS_HAS_CPU_LOONGSON2E) || \ 1969f24d17SRalf Baechle defined(CONFIG_SYS_HAS_CPU_LOONGSON2F) 2069f24d17SRalf Baechle case CPU_LOONGSON2: 2169f24d17SRalf Baechle #endif 2269f24d17SRalf Baechle 23c579d310SHuacai Chen #ifdef CONFIG_SYS_HAS_CPU_LOONGSON3 24c579d310SHuacai Chen case CPU_LOONGSON3: 25c579d310SHuacai Chen #endif 26c579d310SHuacai Chen 2769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_LOONGSON1B 2869f24d17SRalf Baechle case CPU_LOONGSON1: 2969f24d17SRalf Baechle #endif 3069f24d17SRalf Baechle 3169f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R1 3269f24d17SRalf Baechle case CPU_4KC: 3369f24d17SRalf Baechle case CPU_ALCHEMY: 3469f24d17SRalf Baechle case CPU_PR4450: 3569f24d17SRalf Baechle #endif 3669f24d17SRalf Baechle 3769f24d17SRalf Baechle #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R1) || \ 3869f24d17SRalf Baechle defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) 3969f24d17SRalf Baechle case CPU_4KEC: 405b9cdd24SPaul Burton case CPU_JZRISC: 4169f24d17SRalf Baechle #endif 4269f24d17SRalf Baechle 4369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R2 4469f24d17SRalf Baechle case CPU_4KSC: 4569f24d17SRalf Baechle case CPU_24K: 4669f24d17SRalf Baechle case CPU_34K: 4769f24d17SRalf Baechle case CPU_1004K: 4869f24d17SRalf Baechle case CPU_74K: 4969f24d17SRalf Baechle case CPU_M14KC: 5069f24d17SRalf Baechle case CPU_M14KEC: 5126ab96dfSLeonid Yegoshin case CPU_INTERAPTIV: 52708ac4b8SLeonid Yegoshin case CPU_PROAPTIV: 53aced4cbdSJames Hogan case CPU_P5600: 54f36c4720SLeonid Yegoshin case CPU_M5150: 5569f24d17SRalf Baechle #endif 5669f24d17SRalf Baechle 574695089fSLeonid Yegoshin #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) || \ 584695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS32_R6) || \ 594695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS64_R2) || \ 604695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS64_R6) 614695089fSLeonid Yegoshin case CPU_QEMU_GENERIC: 624695089fSLeonid Yegoshin #endif 634695089fSLeonid Yegoshin 6469f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R1 6569f24d17SRalf Baechle case CPU_5KC: 6669f24d17SRalf Baechle case CPU_5KE: 6769f24d17SRalf Baechle case CPU_20KC: 6869f24d17SRalf Baechle case CPU_25KF: 6969f24d17SRalf Baechle case CPU_SB1: 7069f24d17SRalf Baechle case CPU_SB1A: 7169f24d17SRalf Baechle #endif 7269f24d17SRalf Baechle 7369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R2 7469f24d17SRalf Baechle /* 7569f24d17SRalf Baechle * All MIPS64 R2 processors have their own special symbols. That is, 7669f24d17SRalf Baechle * there currently is no pure R2 core 7769f24d17SRalf Baechle */ 7869f24d17SRalf Baechle #endif 7969f24d17SRalf Baechle 804e88a862SMarkos Chandras #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6 814e88a862SMarkos Chandras case CPU_I6400: 821091bfa2SPaul Burton case CPU_P6600: 834e88a862SMarkos Chandras #endif 844e88a862SMarkos Chandras 8569f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R3000 8669f24d17SRalf Baechle case CPU_R2000: 8769f24d17SRalf Baechle case CPU_R3000: 8869f24d17SRalf Baechle case CPU_R3000A: 8969f24d17SRalf Baechle case CPU_R3041: 9069f24d17SRalf Baechle case CPU_R3051: 9169f24d17SRalf Baechle case CPU_R3052: 9269f24d17SRalf Baechle case CPU_R3081: 9369f24d17SRalf Baechle case CPU_R3081E: 9469f24d17SRalf Baechle #endif 9569f24d17SRalf Baechle 9669f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_TX39XX 9769f24d17SRalf Baechle case CPU_TX3912: 9869f24d17SRalf Baechle case CPU_TX3922: 9969f24d17SRalf Baechle case CPU_TX3927: 10069f24d17SRalf Baechle #endif 10169f24d17SRalf Baechle 10269f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_VR41XX 10369f24d17SRalf Baechle case CPU_VR41XX: 10469f24d17SRalf Baechle case CPU_VR4111: 10569f24d17SRalf Baechle case CPU_VR4121: 10669f24d17SRalf Baechle case CPU_VR4122: 10769f24d17SRalf Baechle case CPU_VR4131: 10869f24d17SRalf Baechle case CPU_VR4133: 10969f24d17SRalf Baechle case CPU_VR4181: 11069f24d17SRalf Baechle case CPU_VR4181A: 11169f24d17SRalf Baechle #endif 11269f24d17SRalf Baechle 11369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R4300 11469f24d17SRalf Baechle case CPU_R4300: 11569f24d17SRalf Baechle case CPU_R4310: 11669f24d17SRalf Baechle #endif 11769f24d17SRalf Baechle 11869f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R4X00 11969f24d17SRalf Baechle case CPU_R4000PC: 12069f24d17SRalf Baechle case CPU_R4000SC: 12169f24d17SRalf Baechle case CPU_R4000MC: 12269f24d17SRalf Baechle case CPU_R4200: 12369f24d17SRalf Baechle case CPU_R4400PC: 12469f24d17SRalf Baechle case CPU_R4400SC: 12569f24d17SRalf Baechle case CPU_R4400MC: 12669f24d17SRalf Baechle case CPU_R4600: 12769f24d17SRalf Baechle case CPU_R4700: 12869f24d17SRalf Baechle case CPU_R4640: 12969f24d17SRalf Baechle case CPU_R4650: 13069f24d17SRalf Baechle #endif 13169f24d17SRalf Baechle 13269f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_TX49XX 13369f24d17SRalf Baechle case CPU_TX49XX: 13469f24d17SRalf Baechle #endif 13569f24d17SRalf Baechle 13669f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R5000 13769f24d17SRalf Baechle case CPU_R5000: 13869f24d17SRalf Baechle #endif 13969f24d17SRalf Baechle 14069f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R5432 14169f24d17SRalf Baechle case CPU_R5432: 14269f24d17SRalf Baechle #endif 14369f24d17SRalf Baechle 14469f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R5500 14569f24d17SRalf Baechle case CPU_R5500: 14669f24d17SRalf Baechle #endif 14769f24d17SRalf Baechle 14869f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R6000 14969f24d17SRalf Baechle case CPU_R6000: 15069f24d17SRalf Baechle case CPU_R6000A: 15169f24d17SRalf Baechle #endif 15269f24d17SRalf Baechle 15369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_NEVADA 15469f24d17SRalf Baechle case CPU_NEVADA: 15569f24d17SRalf Baechle #endif 15669f24d17SRalf Baechle 15769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R8000 15869f24d17SRalf Baechle case CPU_R8000: 15969f24d17SRalf Baechle #endif 16069f24d17SRalf Baechle 16169f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R10000 16269f24d17SRalf Baechle case CPU_R10000: 16369f24d17SRalf Baechle case CPU_R12000: 16469f24d17SRalf Baechle case CPU_R14000: 16530577391SJoshua Kinard case CPU_R16000: 16669f24d17SRalf Baechle #endif 16769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_RM7000 16869f24d17SRalf Baechle case CPU_RM7000: 16969f24d17SRalf Baechle case CPU_SR71000: 17069f24d17SRalf Baechle #endif 17169f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_SB1 17269f24d17SRalf Baechle case CPU_SB1: 17369f24d17SRalf Baechle case CPU_SB1A: 17469f24d17SRalf Baechle #endif 17569f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON 17669f24d17SRalf Baechle case CPU_CAVIUM_OCTEON: 17769f24d17SRalf Baechle case CPU_CAVIUM_OCTEON_PLUS: 17869f24d17SRalf Baechle case CPU_CAVIUM_OCTEON2: 179cd3f5389SAndreas Herrmann case CPU_CAVIUM_OCTEON3: 18069f24d17SRalf Baechle #endif 18169f24d17SRalf Baechle 182baaac02eSJonas Gorski #if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \ 183baaac02eSJonas Gorski defined (CONFIG_SYS_HAS_CPU_MIPS32_R1) 184baaac02eSJonas Gorski case CPU_BMIPS32: 185baaac02eSJonas Gorski case CPU_BMIPS3300: 186baaac02eSJonas Gorski #endif 187baaac02eSJonas Gorski 188baaac02eSJonas Gorski #ifdef CONFIG_SYS_HAS_CPU_BMIPS4350 189baaac02eSJonas Gorski case CPU_BMIPS4350: 190baaac02eSJonas Gorski #endif 191baaac02eSJonas Gorski 19269f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_BMIPS4380 19369f24d17SRalf Baechle case CPU_BMIPS4380: 19469f24d17SRalf Baechle #endif 19569f24d17SRalf Baechle 19669f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_BMIPS5000 19769f24d17SRalf Baechle case CPU_BMIPS5000: 19869f24d17SRalf Baechle #endif 19969f24d17SRalf Baechle 20069f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_XLP 20169f24d17SRalf Baechle case CPU_XLP: 20269f24d17SRalf Baechle #endif 20369f24d17SRalf Baechle 20469f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_XLR 20569f24d17SRalf Baechle case CPU_XLR: 20669f24d17SRalf Baechle #endif 20769f24d17SRalf Baechle break; 20869f24d17SRalf Baechle default: 20969f24d17SRalf Baechle unreachable(); 21069f24d17SRalf Baechle } 21169f24d17SRalf Baechle 21269f24d17SRalf Baechle return cpu_type; 21369f24d17SRalf Baechle } 21469f24d17SRalf Baechle 21569f24d17SRalf Baechle static inline int __pure current_cpu_type(void) 21669f24d17SRalf Baechle { 21769f24d17SRalf Baechle const int cpu_type = current_cpu_data.cputype; 21869f24d17SRalf Baechle 21969f24d17SRalf Baechle return __get_cpu_type(cpu_type); 22069f24d17SRalf Baechle } 22169f24d17SRalf Baechle 22269f24d17SRalf Baechle static inline int __pure boot_cpu_type(void) 22369f24d17SRalf Baechle { 22469f24d17SRalf Baechle const int cpu_type = cpu_data[0].cputype; 22569f24d17SRalf Baechle 22669f24d17SRalf Baechle return __get_cpu_type(cpu_type); 22769f24d17SRalf Baechle } 22869f24d17SRalf Baechle 22969f24d17SRalf Baechle #endif /* __ASM_CPU_TYPE_H */ 230