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 check_bugs(void)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 */ 78