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