[BACK]Return to cpu.c CVS log [TXT][DIR] Up to [local] / funnyos / dev

File: [local] / funnyos / dev / cpu.c (download)

Revision 1.1.1.1 (vendor branch), Tue Oct 16 08:41:04 2007 UTC (16 years, 6 months ago) by init
Branch: nbrk
CVS Tags: init
Changes since 1.1: +0 -0 lines

Initial import of funnyos; still much more work to do

/*
 * $Id: cpu.c,v 1.1.1.1 2007/10/16 08:41:04 init Exp $
 */
#include <sys/types.h>
#include <sys/device.h>
#include <sys/mem.h>
#include <libkern/printf.h>

#include <sys/cpu.h>


int 	cpu_attach(struct device *, uint32_t, uint8_t);


struct driver cpu_dr = {
	sizeof(struct cpu_dd),
	cpu_attach,
	NULL
};

void 	cpu_identify(struct cpu_dd *);

int
cpu_attach(struct device *self, uint32_t loc, uint8_t flags)
{
	struct cpu_dd *ddp = self->dv_devdata;

	/* identify CPU */
	cpu_identify(ddp);


	printf("%s CPU at %d MHz (flags=0x%x)\n", ddp->cpu_name, 
							ddp->cpu_freq, ddp->cpu_flags);

	return(-1);
}


void
cpu_identify(struct cpu_dd *ddp)
{
	/*
	 * Identify given CPU using cp15 (System Control Co-Processor) register 0 (ID)
	 */
//	uint32_t rd;

	/* store cp15 ID register into rd */
//	__asm __volatile("mrc p15 0, %0, c0, c0, 0"
//												:"=r" (rd));

	/* parse ID; See the ARM Architecture Reference Manual for details. */
	/* XXX */

	ddp->cpu_name = "StrongARM SA110";
	ddp->cpu_freq = 233;
	ddp->cpu_flags = CPU_HAVE_ICACHE | CPU_HAVE_DCACHE | CPU_HAVE_MMU;
}