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
17static void __init check_bugs(void)
18{
19	extern unsigned long loops_per_jiffy;
20	char *p = &init_utsname()->machine[2]; /* "sh" */
21
22	current_cpu_data.loops_per_jiffy = loops_per_jiffy;
23
24	switch (current_cpu_data.type) {
25	case CPU_SH7604 ... CPU_SH7619:
26		*p++ = '2';
27		break;
28	case CPU_SH7206:
29		*p++ = '2';
30		*p++ = 'a';
31		break;
32	case CPU_SH7705 ... CPU_SH7300:
33		*p++ = '3';
34		break;
35	case CPU_SH7750 ... CPU_SH4_501:
36		*p++ = '4';
37		break;
38	case CPU_SH7770 ... CPU_SH7785:
39		*p++ = '4';
40		*p++ = 'a';
41		break;
42	case CPU_SH73180 ... CPU_SH7722:
43		*p++ = '4';
44		*p++ = 'a';
45		*p++ = 'l';
46		*p++ = '-';
47		*p++ = 'd';
48		*p++ = 's';
49		*p++ = 'p';
50		break;
51	default:
52		*p++ = '?';
53		*p++ = '!';
54		break;
55	}
56
57	printk("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
58
59#ifndef __LITTLE_ENDIAN__
60	/* 'eb' means 'Endian Big' */
61	*p++ = 'e';
62	*p++ = 'b';
63#endif
64	*p = '\0';
65}
66#endif /* __ASM_SH_BUGS_H */
67