1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/* $OpenBSD: prom.h,v 1.1 2005/04/19 21:30:18 miod Exp $ */
/*
* Copyright (c) 2005, Miodrag Vallat
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _SOLBOURNE_PROM_H_
#define _SOLBOURNE_PROM_H_
/*
* The following describes the PROM communication structure,
* which appears at the beginning of physical memory.
*/
#define PROM_CODE_PA 0x00000000
#define PROM_CODE_VA PTW0_BASE
#define PROM_DATA_PA PHYSMEM_BASE
#define PROM_DATA_VA PTW1_BASE
struct sb_prom {
int sp_interface; /* interface version */
int (*sp_interp)(const char *); /* prom commands */
char sp_version[128]; /* prom version */
int (*sp_eval)(const char *); /* forth commands */
int sp_ramdisk; /* ramdisk size if any in MB */
int sp_promend; /* first available va */
int sp_memsize; /* memory size in pages... */
int sp_memsize_mb; /* ...and in MB */
int sp_reserve_start; /* reserved area (in pages) */
int sp_reserve_len; /* and length (in pages) */
vaddr_t sp_msgbufp; /* PROM msgbuf pointer */
int sp_sash_usrtrap;
int sp_rootnode;
int sp_validregs; /* nonzero if registers... */
int sp_regs[100]; /* ...array is valid */
int sp_revision; /* prom revision */
};
#define PROM_INTERFACE 4
/*
* Reset strings
*/
#define PROM_RESET_COLD "cold"
#define PROM_RESET_WARM "warm"
#define PROM_RESET_HALT "halt"
/*
* Environment variables (all upper-case)
*/
#define ENV_ETHERADDR "ENETADDR"
#define ENV_INPUTDEVICE "INPUT-DEVICE"
#define ENV_MODEL "MODEL"
#define ENV_OUTPUTDEVICE "OUTPUT-DEVICE"
#define ENV_TTYA "TTYA_MODE"
#define ENV_TTYB "TTYB_MODE"
/*
* Node structures
*/
struct prom_node {
int pn_sibling;
int pn_child;
vaddr_t pn_props;
char *pn_name;
};
struct prom_prop {
struct prom_prop *pp_next;
size_t pp_size;
char pp_data[0];
};
/*
* System model
*/
extern int sysmodel;
#define SYS_S4000 0xf4
#define SYS_S4100 0xf5
const char *prom_getenv(const char *);
#endif /* _SOLBOURNE_PROM_H_ */
|