/*
* 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 .
*
* identify . c : identify machine by looking up system identifier
*
* Copyright ( C ) 1998 Thomas Bogendoerfer
*
* This code is based on arch / mips / sgi / kernel / system . c , which is
*
* Copyright ( C ) 1996 David S . Miller ( davem @ davemloft . net )
*/
#include <linux/bug.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/string.h>
#include <asm /sgialib.h>
#include <asm /bootinfo.h>
struct smatch {
char *arcname;
char *liname;
int flags;
};
static struct smatch mach_table[] = {
{
.arcname = "SGI-IP22" ,
.liname = "SGI Indy" ,
.flags = PROM_FLAG_ARCS,
}, {
.arcname = "SGI-IP28" ,
.liname = "SGI IP28" ,
.flags = PROM_FLAG_ARCS,
}, {
.arcname = "SGI-IP30" ,
.liname = "SGI Octane" ,
.flags = PROM_FLAG_ARCS,
}, {
.arcname = "SGI-IP32" ,
.liname = "SGI O2" ,
.flags = PROM_FLAG_ARCS,
}, {
.arcname = "Microsoft-Jazz" ,
.liname = "Jazz MIPS_Magnum_4000" ,
.flags = 0 ,
}, {
.arcname = "PICA-61" ,
.liname = "Jazz Acer_PICA_61" ,
.flags = 0 ,
}, {
.arcname = "RM200PCI" ,
.liname = "SNI RM200_PCI" ,
.flags = PROM_FLAG_DONT_FREE_TEMP,
}, {
.arcname = "RM200PCI-R5K" ,
.liname = "SNI RM200_PCI-R5K" ,
.flags = PROM_FLAG_DONT_FREE_TEMP,
}
};
int prom_flags;
static struct smatch * __init string_to_mach(const char *s)
{
int i;
for (i = 0 ; i < ARRAY_SIZE(mach_table); i++) {
if (!strcmp(s, mach_table[i].arcname))
return &mach_table[i];
}
panic("Yeee, could not determine architecture type <%s>" , s);
}
char *system_type;
const char *get_system_type(void )
{
return system_type;
}
static pcomponent * __init ArcGetChild(pcomponent *Current)
{
return (pcomponent *) ARC_CALL1(child_component, Current);
}
void __init prom_identify_arch(void )
{
pcomponent *p;
struct smatch *mach;
const char *iname;
/*
* The root component tells us what machine architecture we have here .
*/
p = ArcGetChild(PROM_NULL_COMPONENT);
if (p == NULL) {
iname = "Unknown" ;
} else
iname = (char *) (long ) p->iname;
printk("ARCH: %s\n" , iname);
mach = string_to_mach(iname);
system_type = mach->liname;
prom_flags = mach->flags;
}
Messung V0.5 in Prozent C=99 H=82 G=90
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland