⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.c

📁 内核linux2.4.20,可跟rtlinux3.2打补丁 组成实时linux系统,编译内核
💻 C
字号:
/* * 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. * * system.c: Probe the system type using ARCS prom interface library. * * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) * Copyright (C) 2000, 2001 Ralf Baechle (ralf@gnu.org) */#include <linux/init.h>#include <linux/kernel.h>#include <linux/types.h>#include <linux/string.h>#include <asm/sgi/sgi.h>#include <asm/sgialib.h>#include <asm/bootinfo.h>struct smatch {	char *name;	int type;};static struct smatch sgi_cputable[] = {	{ "MIPS-R2000", CPU_R2000 },	{ "MIPS-R3000", CPU_R3000 },	{ "MIPS-R3000A", CPU_R3000A },	{ "MIPS-R4000", CPU_R4000SC },	{ "MIPS-R4400", CPU_R4400SC },	{ "MIPS-R4600", CPU_R4600 },	{ "MIPS-R8000", CPU_R8000 },	{ "MIPS-R5000", CPU_R5000 },	{ "MIPS-R5000A", CPU_R5000A }};#define NUM_CPUS 9 /* for now */static int __init string_to_cpu(char *s){	int i;	for(i = 0; i < NUM_CPUS; i++) {		if(!strcmp(s, sgi_cputable[i].name))			return sgi_cputable[i].type;	}	panic("\nYeee, could not determine MIPS cpu type <%s>", s);	return 0;}/* * We' call this early before loadmmu().  If we do the other way around * the firmware will crash and burn. */void __init sgi_sysinit(void){	pcomponent *p, *toplev, *cpup = 0;	int cputype = -1;	/* The root component tells us what machine architecture we	 * have here.	 */	p = ArcGetChild(PROM_NULL_COMPONENT);	/* Now scan for cpu(s). */	toplev = p = ArcGetChild(p);	while(p) {		int ncpus = 0;		if(p->type == Cpu) {			if (++ncpus > 1)				panic("\nYeee, SGI MP not ready yet");			printk("CPU: %s ", p->iname);			cpup = p;			cputype = string_to_cpu(cpup->iname);		}		p = ArcGetPeer(p);	}	if (cputype == -1) {		panic("\nYeee, could not find cpu ARCS component");	}	p = ArcGetChild(cpup);	while(p) {		switch(p->class) {		case processor:			switch(p->type) {			case Fpu:				printk("FPU<%s> ", p->iname);				break;			default:				break;			};			break;		case cache:			switch(p->type) {			case picache:				printk("ICACHE ");				break;			case pdcache:				printk("DCACHE ");				break;			case sccache:				printk("SCACHE ");				break;			default:				break;			};			break;		default:			break;		};		p = ArcGetPeer(p);	}	printk("\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -