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
sparc
prom
bootstr_32.c
Go to the documentation of this file.
1
/*
2
* bootstr.c: Boot string/argument acquisition from the PROM.
3
*
4
* Copyright(C) 1995 David S. Miller (
[email protected]
)
5
*/
6
7
#include <linux/string.h>
8
#include <asm/oplib.h>
9
#include <
linux/init.h
>
10
11
#define BARG_LEN 256
12
static
char
barg_buf[
BARG_LEN
] = { 0 };
13
static
char
fetched
__initdata
= 0;
14
15
char
*
__init
16
prom_getbootargs
(
void
)
17
{
18
int
iter;
19
char
*
cp
, *
arg
;
20
21
/* This check saves us from a panic when bootfd patches args. */
22
if
(fetched) {
23
return
barg_buf;
24
}
25
26
switch
(
prom_vers
) {
27
case
PROM_V0
:
28
cp = barg_buf;
29
/* Start from 1 and go over fd(0,0,0)kernel */
30
for
(iter = 1; iter < 8; iter++) {
31
arg = (*(
romvec
->pv_v0bootargs))->argv[iter];
32
if
(arg ==
NULL
)
33
break
;
34
while
(*arg != 0) {
35
/* Leave place for space and null. */
36
if
(cp >= barg_buf +
BARG_LEN
-2){
37
/* We might issue a warning here. */
38
break
;
39
}
40
*cp++ = *arg++;
41
}
42
*cp++ =
' '
;
43
}
44
*cp = 0;
45
break
;
46
case
PROM_V2
:
47
case
PROM_V3
:
48
/*
49
* V3 PROM cannot supply as with more than 128 bytes
50
* of an argument. But a smart bootstrap loader can.
51
*/
52
strlcpy
(barg_buf, *
romvec
->pv_v2bootargs.bootargs,
sizeof
(barg_buf));
53
break
;
54
default
:
55
break
;
56
}
57
58
fetched = 1;
59
return
barg_buf;
60
}
Generated on Thu Jan 10 2013 13:18:51 for Linux Kernel by
1.8.2