xref: /openbmc/linux/arch/mips/include/asm/cpu-type.h (revision d3164e2f)
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 Baechle static 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 Baechle static 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 Baechle static 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