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 __get_cpu_type(const int cpu_type)1569f24d17SRalf Baechlestatic inline int __pure __get_cpu_type(const int cpu_type) 1669f24d17SRalf Baechle { 1769f24d17SRalf Baechle switch (cpu_type) { 1887f67cc4SGuenter Roeck #if defined(CONFIG_SYS_HAS_CPU_LOONGSON2E) || \ 1987f67cc4SGuenter Roeck defined(CONFIG_SYS_HAS_CPU_LOONGSON2F) 20268a2d60SJiaxun Yang case CPU_LOONGSON2EF: 2169f24d17SRalf Baechle #endif 2269f24d17SRalf Baechle 23268a2d60SJiaxun Yang #ifdef CONFIG_SYS_HAS_CPU_LOONGSON64 24268a2d60SJiaxun Yang case CPU_LOONGSON64: 25c579d310SHuacai Chen #endif 26c579d310SHuacai Chen 27a1ca8386SYang Ling #if defined(CONFIG_SYS_HAS_CPU_LOONGSON1B) || \ 28a1ca8386SYang Ling defined(CONFIG_SYS_HAS_CPU_LOONGSON1C) 29b2afb64cSHuacai Chen case CPU_LOONGSON32: 3069f24d17SRalf Baechle #endif 3169f24d17SRalf Baechle 3269f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R1 3369f24d17SRalf Baechle case CPU_4KC: 3469f24d17SRalf Baechle case CPU_ALCHEMY: 3569f24d17SRalf Baechle case CPU_PR4450: 3669f24d17SRalf Baechle #endif 3769f24d17SRalf Baechle 3869f24d17SRalf Baechle #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R1) || \ 3969f24d17SRalf Baechle defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) 4069f24d17SRalf Baechle case CPU_4KEC: 413b25b763SPaul Cercueil case CPU_XBURST: 4269f24d17SRalf Baechle #endif 4369f24d17SRalf Baechle 4469f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R2 4569f24d17SRalf Baechle case CPU_4KSC: 4669f24d17SRalf Baechle case CPU_24K: 4769f24d17SRalf Baechle case CPU_34K: 4869f24d17SRalf Baechle case CPU_1004K: 4969f24d17SRalf Baechle case CPU_74K: 50e393fbe6SWei Li case CPU_1074K: 5169f24d17SRalf Baechle case CPU_M14KC: 5269f24d17SRalf Baechle case CPU_M14KEC: 5326ab96dfSLeonid Yegoshin case CPU_INTERAPTIV: 54708ac4b8SLeonid Yegoshin case CPU_PROAPTIV: 55ab7c01fdSSerge Semin #endif 56ab7c01fdSSerge Semin 57ab7c01fdSSerge Semin #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R5 58f36c4720SLeonid Yegoshin case CPU_M5150: 59ab7c01fdSSerge Semin case CPU_P5600: 6069f24d17SRalf Baechle #endif 6169f24d17SRalf Baechle 624695089fSLeonid Yegoshin #if defined(CONFIG_SYS_HAS_CPU_MIPS32_R2) || \ 63ab7c01fdSSerge Semin defined(CONFIG_SYS_HAS_CPU_MIPS32_R5) || \ 644695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS32_R6) || \ 654695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS64_R2) || \ 66ab7c01fdSSerge Semin defined(CONFIG_SYS_HAS_CPU_MIPS64_R5) || \ 674695089fSLeonid Yegoshin defined(CONFIG_SYS_HAS_CPU_MIPS64_R6) 684695089fSLeonid Yegoshin case CPU_QEMU_GENERIC: 694695089fSLeonid Yegoshin #endif 704695089fSLeonid Yegoshin 7169f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R1 7269f24d17SRalf Baechle case CPU_5KC: 7369f24d17SRalf Baechle case CPU_5KE: 7469f24d17SRalf Baechle case CPU_20KC: 7569f24d17SRalf Baechle case CPU_25KF: 7669f24d17SRalf Baechle case CPU_SB1: 7769f24d17SRalf Baechle case CPU_SB1A: 7869f24d17SRalf Baechle #endif 7969f24d17SRalf Baechle 8069f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R2 8169f24d17SRalf Baechle /* 8269f24d17SRalf Baechle * All MIPS64 R2 processors have their own special symbols. That is, 8369f24d17SRalf Baechle * there currently is no pure R2 core 8469f24d17SRalf Baechle */ 8569f24d17SRalf Baechle #endif 8669f24d17SRalf Baechle 871dbf6a81SPaul Burton #ifdef CONFIG_SYS_HAS_CPU_MIPS32_R6 881dbf6a81SPaul Burton case CPU_M6250: 891dbf6a81SPaul Burton #endif 901dbf6a81SPaul Burton 914e88a862SMarkos Chandras #ifdef CONFIG_SYS_HAS_CPU_MIPS64_R6 924e88a862SMarkos Chandras case CPU_I6400: 93859aeb1bSPaul Burton case CPU_I6500: 941091bfa2SPaul Burton case CPU_P6600: 954e88a862SMarkos Chandras #endif 964e88a862SMarkos Chandras 9769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R3000 9869f24d17SRalf Baechle case CPU_R2000: 9969f24d17SRalf Baechle case CPU_R3000: 10069f24d17SRalf Baechle case CPU_R3000A: 10169f24d17SRalf Baechle case CPU_R3041: 10269f24d17SRalf Baechle case CPU_R3051: 10369f24d17SRalf Baechle case CPU_R3052: 10469f24d17SRalf Baechle case CPU_R3081: 10569f24d17SRalf Baechle case CPU_R3081E: 10669f24d17SRalf Baechle #endif 10769f24d17SRalf Baechle 108*65ce6197SLauri Kasanen #ifdef CONFIG_SYS_HAS_CPU_R4300 109*65ce6197SLauri Kasanen case CPU_R4300: 110*65ce6197SLauri Kasanen case CPU_R4310: 111*65ce6197SLauri Kasanen #endif 112*65ce6197SLauri Kasanen 11369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R4X00 11469f24d17SRalf Baechle case CPU_R4000PC: 11569f24d17SRalf Baechle case CPU_R4000SC: 11669f24d17SRalf Baechle case CPU_R4000MC: 11769f24d17SRalf Baechle case CPU_R4200: 11869f24d17SRalf Baechle case CPU_R4400PC: 11969f24d17SRalf Baechle case CPU_R4400SC: 12069f24d17SRalf Baechle case CPU_R4400MC: 12169f24d17SRalf Baechle case CPU_R4600: 12269f24d17SRalf Baechle case CPU_R4700: 12369f24d17SRalf Baechle case CPU_R4640: 12469f24d17SRalf Baechle case CPU_R4650: 12569f24d17SRalf Baechle #endif 12669f24d17SRalf Baechle 12769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_TX49XX 12869f24d17SRalf Baechle case CPU_TX49XX: 12969f24d17SRalf Baechle #endif 13069f24d17SRalf Baechle 13169f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R5000 13269f24d17SRalf Baechle case CPU_R5000: 13369f24d17SRalf Baechle #endif 13469f24d17SRalf Baechle 13569f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R5500 13669f24d17SRalf Baechle case CPU_R5500: 13769f24d17SRalf Baechle #endif 13869f24d17SRalf Baechle 13969f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_NEVADA 14069f24d17SRalf Baechle case CPU_NEVADA: 14169f24d17SRalf Baechle #endif 14269f24d17SRalf Baechle 14369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_R10000 14469f24d17SRalf Baechle case CPU_R10000: 14569f24d17SRalf Baechle case CPU_R12000: 14669f24d17SRalf Baechle case CPU_R14000: 14730577391SJoshua Kinard case CPU_R16000: 14869f24d17SRalf Baechle #endif 14969f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_RM7000 15069f24d17SRalf Baechle case CPU_RM7000: 15169f24d17SRalf Baechle case CPU_SR71000: 15269f24d17SRalf Baechle #endif 15369f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_SB1 15469f24d17SRalf Baechle case CPU_SB1: 15569f24d17SRalf Baechle case CPU_SB1A: 15669f24d17SRalf Baechle #endif 15769f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_CAVIUM_OCTEON 15869f24d17SRalf Baechle case CPU_CAVIUM_OCTEON: 15969f24d17SRalf Baechle case CPU_CAVIUM_OCTEON_PLUS: 16069f24d17SRalf Baechle case CPU_CAVIUM_OCTEON2: 161cd3f5389SAndreas Herrmann case CPU_CAVIUM_OCTEON3: 16269f24d17SRalf Baechle #endif 16369f24d17SRalf Baechle 164baaac02eSJonas Gorski #if defined(CONFIG_SYS_HAS_CPU_BMIPS32_3300) || \ 165baaac02eSJonas Gorski defined (CONFIG_SYS_HAS_CPU_MIPS32_R1) 166baaac02eSJonas Gorski case CPU_BMIPS32: 167baaac02eSJonas Gorski case CPU_BMIPS3300: 168baaac02eSJonas Gorski #endif 169baaac02eSJonas Gorski 170baaac02eSJonas Gorski #ifdef CONFIG_SYS_HAS_CPU_BMIPS4350 171baaac02eSJonas Gorski case CPU_BMIPS4350: 172baaac02eSJonas Gorski #endif 173baaac02eSJonas Gorski 17469f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_BMIPS4380 17569f24d17SRalf Baechle case CPU_BMIPS4380: 17669f24d17SRalf Baechle #endif 17769f24d17SRalf Baechle 17869f24d17SRalf Baechle #ifdef CONFIG_SYS_HAS_CPU_BMIPS5000 17969f24d17SRalf Baechle case CPU_BMIPS5000: 18069f24d17SRalf Baechle #endif 18169f24d17SRalf Baechle break; 18269f24d17SRalf Baechle default: 18369f24d17SRalf Baechle unreachable(); 18469f24d17SRalf Baechle } 18569f24d17SRalf Baechle 18669f24d17SRalf Baechle return cpu_type; 18769f24d17SRalf Baechle } 18869f24d17SRalf Baechle current_cpu_type(void)18969f24d17SRalf Baechlestatic inline int __pure current_cpu_type(void) 19069f24d17SRalf Baechle { 19169f24d17SRalf Baechle const int cpu_type = current_cpu_data.cputype; 19269f24d17SRalf Baechle 19369f24d17SRalf Baechle return __get_cpu_type(cpu_type); 19469f24d17SRalf Baechle } 19569f24d17SRalf Baechle boot_cpu_type(void)19669f24d17SRalf Baechlestatic inline int __pure boot_cpu_type(void) 19769f24d17SRalf Baechle { 19869f24d17SRalf Baechle const int cpu_type = cpu_data[0].cputype; 19969f24d17SRalf Baechle 20069f24d17SRalf Baechle return __get_cpu_type(cpu_type); 20169f24d17SRalf Baechle } 20269f24d17SRalf Baechle 20369f24d17SRalf Baechle #endif /* __ASM_CPU_TYPE_H */ 204