Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
mips
fw
arc
identify.c
Go to the documentation of this file.
1
/*
2
* This file is subject to the terms and conditions of the GNU General Public
3
* License. See the file "COPYING" in the main directory of this archive
4
* for more details.
5
*
6
* identify.c: identify machine by looking up system identifier
7
*
8
* Copyright (C) 1998 Thomas Bogendoerfer
9
*
10
* This code is based on arch/mips/sgi/kernel/system.c, which is
11
*
12
* Copyright (C) 1996 David S. Miller (
[email protected]
)
13
*/
14
#include <
linux/bug.h
>
15
#include <
linux/init.h
>
16
#include <linux/kernel.h>
17
#include <linux/types.h>
18
#include <linux/string.h>
19
20
#include <
asm/sgialib.h
>
21
#include <asm/bootinfo.h>
22
23
struct
smatch
{
24
char
*
arcname
;
25
char
*
liname
;
26
int
flags
;
27
};
28
29
static
struct
smatch
mach_table[] = {
30
{
31
.arcname =
"SGI-IP22"
,
32
.liname =
"SGI Indy"
,
33
.flags =
PROM_FLAG_ARCS
,
34
}, {
35
.arcname =
"SGI-IP27"
,
36
.liname =
"SGI Origin"
,
37
.flags =
PROM_FLAG_ARCS
,
38
}, {
39
.arcname =
"SGI-IP28"
,
40
.liname =
"SGI IP28"
,
41
.flags =
PROM_FLAG_ARCS
,
42
}, {
43
.arcname =
"SGI-IP30"
,
44
.liname =
"SGI Octane"
,
45
.flags =
PROM_FLAG_ARCS
,
46
}, {
47
.arcname =
"SGI-IP32"
,
48
.liname =
"SGI O2"
,
49
.flags =
PROM_FLAG_ARCS
,
50
}, {
51
.arcname =
"Microsoft-Jazz"
,
52
.liname =
"Jazz MIPS_Magnum_4000"
,
53
.flags = 0,
54
}, {
55
.arcname =
"PICA-61"
,
56
.liname =
"Jazz Acer_PICA_61"
,
57
.flags = 0,
58
}, {
59
.arcname =
"RM200PCI"
,
60
.liname =
"SNI RM200_PCI"
,
61
.flags =
PROM_FLAG_DONT_FREE_TEMP
,
62
}, {
63
.arcname =
"RM200PCI-R5K"
,
64
.liname =
"SNI RM200_PCI-R5K"
,
65
.flags =
PROM_FLAG_DONT_FREE_TEMP
,
66
}
67
};
68
69
int
prom_flags
;
70
71
static
struct
smatch
*
__init
string_to_mach(
const
char
*
s
)
72
{
73
int
i
;
74
75
for
(i = 0; i <
ARRAY_SIZE
(mach_table); i++) {
76
if
(!
strcmp
(s, mach_table[i].
arcname
))
77
return
&mach_table[i];
78
}
79
80
panic
(
"Yeee, could not determine architecture type <%s>"
, s);
81
}
82
83
char
*
system_type
;
84
85
const
char
*
get_system_type
(
void
)
86
{
87
return
system_type
;
88
}
89
90
void
__init
prom_identify_arch
(
void
)
91
{
92
pcomponent
*
p
;
93
struct
smatch
*mach;
94
const
char
*iname;
95
96
/*
97
* The root component tells us what machine architecture we have here.
98
*/
99
p =
ArcGetChild
(
PROM_NULL_COMPONENT
);
100
if
(p ==
NULL
) {
101
#ifdef CONFIG_SGI_IP27
102
/* IP27 PROM misbehaves, seems to not implement ARC
103
GetChild(). So we just assume it's an IP27. */
104
iname =
"SGI-IP27"
;
105
#else
106
iname =
"Unknown"
;
107
#endif
108
}
else
109
iname = (
char
*) (
long
) p->
iname
;
110
111
printk
(
"ARCH: %s\n"
, iname);
112
mach = string_to_mach(iname);
113
system_type
= mach->
liname
;
114
115
prom_flags
= mach->
flags
;
116
}
Generated on Thu Jan 10 2013 13:09:15 for Linux Kernel by
1.8.2