Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bugs.h
Go to the documentation of this file.
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 
17 extern void select_idle_routine(void);
18 
19 static void __init check_bugs(void)
20 {
21  extern unsigned long loops_per_jiffy;
22  char *p = &init_utsname()->machine[2]; /* "sh" */
23 
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;
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(&current_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 */