GNU Linux-libre 4.14.262-gnu1
[releases.git] / arch / sh / include / asm / bugs.h
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
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_SH5:
57                 *p++ = '6';
58                 *p++ = '4';
59                 break;
60         case CPU_FAMILY_UNKNOWN:
61                 /*
62                  * Specifically use CPU_FAMILY_UNKNOWN rather than
63                  * default:, so we're able to have the compiler whine
64                  * about unhandled enumerations.
65                  */
66                 break;
67         }
68
69         printk("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
70
71 #ifndef __LITTLE_ENDIAN__
72         /* 'eb' means 'Endian Big' */
73         *p++ = 'e';
74         *p++ = 'b';
75 #endif
76         *p = '\0';
77 }
78 #endif /* __ASM_SH_BUGS_H */