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