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