1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __ASM_SH_BUGS_H
3 #define __ASM_SH_BUGS_H
4 
5 /*
6  * This is included by init/main.c to check for architecture-dependent bugs.
7  *
8  * Needs:
9  *	void check_bugs(void);
10  */
11 
12 /*
13  * I don't know of any Super-H bugs yet.
14  */
15 
16 #include <asm/processor.h>
17 
18 extern void select_idle_routine(void);
19 
check_bugs(void)20 static void __init check_bugs(void)
21 {
22 	extern unsigned long loops_per_jiffy;
23 	char *p = &init_utsname()->machine[2]; /* "sh" */
24 
25 	select_idle_routine();
26 
27 	current_cpu_data.loops_per_jiffy = loops_per_jiffy;
28 
29 	switch (current_cpu_data.family) {
30 	case CPU_FAMILY_SH2:
31 		*p++ = '2';
32 		break;
33 	case CPU_FAMILY_SH2A:
34 		*p++ = '2';
35 		*p++ = 'a';
36 		break;
37 	case CPU_FAMILY_SH3:
38 		*p++ = '3';
39 		break;
40 	case CPU_FAMILY_SH4:
41 		*p++ = '4';
42 		break;
43 	case CPU_FAMILY_SH4A:
44 		*p++ = '4';
45 		*p++ = 'a';
46 		break;
47 	case CPU_FAMILY_SH4AL_DSP:
48 		*p++ = '4';
49 		*p++ = 'a';
50 		*p++ = 'l';
51 		*p++ = '-';
52 		*p++ = 'd';
53 		*p++ = 's';
54 		*p++ = 'p';
55 		break;
56 	case CPU_FAMILY_UNKNOWN:
57 		/*
58 		 * Specifically use CPU_FAMILY_UNKNOWN rather than
59 		 * default:, so we're able to have the compiler whine
60 		 * about unhandled enumerations.
61 		 */
62 		break;
63 	}
64 
65 	printk("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
66 
67 #ifndef __LITTLE_ENDIAN__
68 	/* 'eb' means 'Endian Big' */
69 	*p++ = 'e';
70 	*p++ = 'b';
71 #endif
72 	*p = '\0';
73 }
74 #endif /* __ASM_SH_BUGS_H */
75