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
m68k
sun3
prom
misc.c
Go to the documentation of this file.
1
/*
2
* misc.c: Miscellaneous prom functions that don't belong
3
* anywhere else.
4
*
5
* Copyright (C) 1995 David S. Miller (
[email protected]
)
6
*/
7
8
#include <linux/types.h>
9
#include <linux/kernel.h>
10
#include <linux/sched.h>
11
#include <
asm/sun3-head.h
>
12
#include <asm/idprom.h>
13
#include <asm/openprom.h>
14
#include <asm/oplib.h>
15
#include <
asm/movs.h
>
16
17
/* Reset and reboot the machine with the command 'bcommand'. */
18
void
19
prom_reboot
(
char
*bcommand)
20
{
21
unsigned
long
flags
;
22
local_irq_save
(flags);
23
(*(
romvec
->pv_reboot))(bcommand);
24
local_irq_restore
(flags);
25
}
26
27
/* Drop into the prom, with the chance to continue with the 'go'
28
* prom command.
29
*/
30
void
31
prom_cmdline
(
void
)
32
{
33
}
34
35
/* Drop into the prom, but completely terminate the program.
36
* No chance of continuing.
37
*/
38
void
39
prom_halt
(
void
)
40
{
41
unsigned
long
flags
;
42
again:
43
local_irq_save
(flags);
44
(*(
romvec
->pv_halt))();
45
local_irq_restore
(flags);
46
goto
again;
/* PROM is out to get me -DaveM */
47
}
48
49
typedef
void
(*
sfunc_t
)(
void
);
50
51
/* Get the idprom and stuff it into buffer 'idbuf'. Returns the
52
* format type. 'num_bytes' is the number of bytes that your idbuf
53
* has space for. Returns 0xff on error.
54
*/
55
unsigned
char
56
prom_get_idprom
(
char
*idbuf,
int
num_bytes
)
57
{
58
int
i
, oldsfc;
59
GET_SFC
(oldsfc);
60
SET_SFC
(
FC_CONTROL
);
61
for
(i=0;i<
num_bytes
; i++)
62
{
63
/* There is a problem with the GET_CONTROL_BYTE
64
macro; defining the extra variable
65
gets around it.
66
*/
67
int
c
;
68
GET_CONTROL_BYTE
(
SUN3_IDPROM_BASE
+ i, c);
69
idbuf[
i
] =
c
;
70
}
71
SET_SFC
(oldsfc);
72
return
idbuf[0];
73
}
74
75
/* Get the major prom version number. */
76
int
77
prom_version
(
void
)
78
{
79
return
romvec
->pv_romvers;
80
}
81
82
/* Get the prom plugin-revision. */
83
int
84
prom_getrev
(
void
)
85
{
86
return
prom_rev
;
87
}
88
89
/* Get the prom firmware print revision. */
90
int
91
prom_getprev
(
void
)
92
{
93
return
prom_prev
;
94
}
Generated on Thu Jan 10 2013 12:48:58 for Linux Kernel by
1.8.2