blob: 030df56bfdb20f2b8a648c3a82e44a3684cb3e5d [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#ifndef __ASM_SH_BUGS_H
3#define __ASM_SH_BUGS_H
4
5/*
6 * This is included by init/main.c to check for architecture-dependent bugs.
7 *
8 * Needs:
9 * void check_bugs(void);
10 */
11
12/*
13 * I don't know of any Super-H bugs yet.
14 */
15
16#include <asm/processor.h>
17
Paul Mundtf533c3d2009-10-16 17:20:58 +090018extern void select_idle_routine(void);
19
Linus Torvalds1da177e2005-04-16 15:20:36 -070020static void __init check_bugs(void)
21{
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 extern unsigned long loops_per_jiffy;
Paul Mundt41504c32006-12-11 20:28:03 +090023 char *p = &init_utsname()->machine[2]; /* "sh" */
Linus Torvalds1da177e2005-04-16 15:20:36 -070024
Paul Mundtf533c3d2009-10-16 17:20:58 +090025 select_idle_routine();
26
Paul Mundt11c19652006-12-25 10:19:56 +090027 current_cpu_data.loops_per_jiffy = loops_per_jiffy;
Linus Torvalds1da177e2005-04-16 15:20:36 -070028
Paul Mundte82da212009-08-15 10:48:13 +090029 switch (current_cpu_data.family) {
30 case CPU_FAMILY_SH2:
Linus Torvalds1da177e2005-04-16 15:20:36 -070031 *p++ = '2';
32 break;
Paul Mundte82da212009-08-15 10:48:13 +090033 case CPU_FAMILY_SH2A:
Yoshinori Satob2296322006-11-05 16:18:08 +090034 *p++ = '2';
35 *p++ = 'a';
36 break;
Paul Mundte82da212009-08-15 10:48:13 +090037 case CPU_FAMILY_SH3:
Linus Torvalds1da177e2005-04-16 15:20:36 -070038 *p++ = '3';
39 break;
Paul Mundte82da212009-08-15 10:48:13 +090040 case CPU_FAMILY_SH4:
Linus Torvalds1da177e2005-04-16 15:20:36 -070041 *p++ = '4';
42 break;
Paul Mundte82da212009-08-15 10:48:13 +090043 case CPU_FAMILY_SH4A:
Paul Mundt5b19c902006-09-27 14:31:40 +090044 *p++ = '4';
45 *p++ = 'a';
46 break;
Paul Mundte82da212009-08-15 10:48:13 +090047 case CPU_FAMILY_SH4AL_DSP:
Paul Mundt41504c32006-12-11 20:28:03 +090048 *p++ = '4';
49 *p++ = 'a';
50 *p++ = 'l';
51 *p++ = '-';
52 *p++ = 'd';
53 *p++ = 's';
54 *p++ = 'p';
55 break;
Paul Mundte82da212009-08-15 10:48:13 +090056 case CPU_FAMILY_SH5:
Paul Mundt29e0d202007-11-22 13:11:39 +090057 *p++ = '6';
58 *p++ = '4';
59 break;
Paul Mundte82da212009-08-15 10:48:13 +090060 case CPU_FAMILY_UNKNOWN:
Paul Mundt29e0d202007-11-22 13:11:39 +090061 /*
Paul Mundte82da212009-08-15 10:48:13 +090062 * Specifically use CPU_FAMILY_UNKNOWN rather than
63 * default:, so we're able to have the compiler whine
64 * about unhandled enumerations.
Paul Mundt29e0d202007-11-22 13:11:39 +090065 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070066 break;
67 }
68
Paul Mundt11c19652006-12-25 10:19:56 +090069 printk("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
Linus Torvalds1da177e2005-04-16 15:20:36 -070070
71#ifndef __LITTLE_ENDIAN__
72 /* 'eb' means 'Endian Big' */
73 *p++ = 'e';
74 *p++ = 'b';
75#endif
76 *p = '\0';
77}
78#endif /* __ASM_SH_BUGS_H */