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