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#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 */