/*
 * arch/v850/kernel/procfs.c -- Introspection functions for /proc filesystem
 *
 *  Copyright (C) 2001,02  NEC Corporation
 *  Copyright (C) 2001,02  Miles Bader <miles@gnu.org>
 *
 * This file is subject to the terms and conditions of the GNU General
 * Public License.  See the file COPYING in the main directory of this
 * archive for more details.
 *
 * Written by Miles Bader <miles@gnu.org>
 */

#include "mach.h"

static int cpuinfo_print (struct seq_file *m, void *v)
{
	extern unsigned long loops_per_jiffy;
	
	seq_printf (m, "CPU-Family:	v850\nCPU-Arch:	%s\n", CPU_ARCH);

#ifdef CPU_MODEL_LONG
	seq_printf (m, "CPU-Model:	%s (%s)\n", CPU_MODEL, CPU_MODEL_LONG);
#else
	seq_printf (m, "CPU-Model:	%s\n", CPU_MODEL);
#endif

#ifdef CPU_CLOCK_FREQ
	seq_printf (m, "CPU-Clock:	%ld (%ld MHz)\n",
		    (long)CPU_CLOCK_FREQ,
		    (long)CPU_CLOCK_FREQ / 1000000);
#endif

	seq_printf (m, "BogoMips:	%lu.%02lu\n",
		    loops_per_jiffy/(500000/HZ),
		    (loops_per_jiffy/(5000/HZ)) % 100);

#ifdef PLATFORM_LONG
	seq_printf (m, "Platform:	%s (%s)\n", PLATFORM, PLATFORM_LONG);
#elif defined (PLATFORM)
	seq_printf (m, "Platform:	%s\n", PLATFORM);
#endif

	return 0;
}

static void *cpuinfo_start (struct seq_file *m, loff_t *pos)
{
	return *pos < NR_CPUS ? ((void *) 0x12345678) : NULL;
}

static void *cpuinfo_next (struct seq_file *m, void *v, loff_t *pos)
{
	++*pos;
	return cpuinfo_start (m, pos);
}

static void cpuinfo_stop (struct seq_file *m, void *v)
{
}

struct seq_operations cpuinfo_op = {
	.start	= cpuinfo_start,
	.next	= cpuinfo_next,
	.stop	= cpuinfo_stop,
	.show	= cpuinfo_print
};
