#ifndef __ASM_SH_BUGS_H
#define __ASM_SH_BUGS_H

/*
 * This is included by init/main.c to check for architecture-dependent bugs.
 *
 * Needs:
 *	void check_bugs(void);
 */

/*
 * I don't know of any Super-H bugs yet.
 */

#include <asm/processor.h>

static void __init check_bugs(void)
{
	extern char *get_cpu_subtype(void);
	extern unsigned long loops_per_jiffy;
	char *p= &init_utsname()->machine[2]; /* "sh" */

	cpu_data->loops_per_jiffy = loops_per_jiffy;

	switch (cpu_data->type) {
	case CPU_SH7604:
		*p++ = '2';
		break;
	case CPU_SH7705 ... CPU_SH7300:
		*p++ = '3';
		break;
	case CPU_SH7750 ... CPU_SH4_501:
		*p++ = '4';
		break;
	case CPU_SH7770 ... CPU_SH7781:
		*p++ = '4';
		*p++ = 'a';
		break;
	default:
		*p++ = '?';
		*p++ = '!';
		break;
	}

	printk("CPU: %s\n", get_cpu_subtype());

#ifndef __LITTLE_ENDIAN__
	/* 'eb' means 'Endian Big' */
	*p++ = 'e';
	*p++ = 'b';
#endif
	*p = '\0';
}
#endif /* __ASM_SH_BUGS_H */
