config.h revision 4571
1/*
2 * Copyright (c) 1980, 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 *    must display the following acknowledgement:
15 *	This product includes software developed by the University of
16 *	California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 *	@(#)config.h	8.1 (Berkeley) 6/6/93
34 */
35
36/*
37 * Config.
38 */
39#include <sys/types.h>
40#include <stdlib.h>
41#include <string.h>
42
43#define	NODEV	((dev_t)-1)
44
45struct file_list {
46	struct	file_list *f_next;
47	char	*f_fn;			/* the name */
48	u_char	f_type;			/* see below */
49	u_char	f_flags;		/* see below */
50	char	*f_special;		/* special make rule if present */
51	char	*f_depends;		/* additional dependancies */
52	char	*f_needs;
53	/*
54	 * Random values:
55	 *	swap space parameters for swap areas
56	 *	root device, etc. for system specifications
57	 */
58	union {
59		struct {		/* when swap specification */
60			dev_t	fuw_swapdev;
61			int	fuw_swapsize;
62			int	fuw_swapflag;
63		} fuw;
64		struct {		/* when system specification */
65			dev_t	fus_rootdev;
66			dev_t	fus_dumpdev;
67		} fus;
68		struct {		/* when component dev specification */
69			dev_t	fup_compdev;
70			int	fup_compinfo;
71		} fup;
72	} fun;
73#define	f_swapdev	fun.fuw.fuw_swapdev
74#define	f_swapsize	fun.fuw.fuw_swapsize
75#define	f_swapflag	fun.fuw.fuw_swapflag
76#define	f_rootdev	fun.fus.fus_rootdev
77#define	f_dumpdev	fun.fus.fus_dumpdev
78#define f_compdev	fun.fup.fup_compdev
79#define f_compinfo	fun.fup.fup_compinfo
80};
81
82/*
83 * Types.
84 */
85#define DRIVER		1
86#define NORMAL		2
87#define	INVISIBLE	3
88#define	PROFILING	4
89#define	SYSTEMSPEC	5
90#define	SWAPSPEC	6
91#define COMPDEVICE	7
92#define COMPSPEC	8
93
94/*
95 * Attributes (flags).
96 */
97#define	CONFIGDEP	1
98#define NO_IMPLCT_RULE	2
99#define NO_OBJ		4
100
101struct	idlst {
102	char	*id;
103	struct	idlst *id_next;
104};
105
106struct device {
107	int	d_type;			/* CONTROLLER, DEVICE, bus adaptor */
108	struct	device *d_conn;		/* what it is connected to */
109	char	*d_name;		/* name of device (e.g. rk11) */
110	struct	idlst *d_vec;		/* interrupt vectors */
111	int	d_pri;			/* interrupt priority */
112	int	d_addr;			/* address of csr */
113	int	d_unit;			/* unit number */
114	int	d_drive;		/* drive number */
115	int	d_slave;		/* slave number */
116#define QUES	-1	/* -1 means '?' */
117#define	UNKNOWN -2	/* -2 means not set yet */
118	int	d_dk;			/* if init 1 set to number for iostat */
119	int	d_flags;		/* flags for device init */
120	char	*d_port;		/* io port base manifest constant */
121	int	d_portn;	/* io port base (if number not manifest) */
122	char	*d_mask;		/* interrupt mask */
123	int	d_maddr;		/* io memory base */
124	int	d_msize;		/* io memory size */
125	int	d_drq;			/* DMA request  */
126	int	d_irq;			/* interrupt request  */
127	struct	device *d_next;		/* Next one in list */
128};
129#define TO_NEXUS	(struct device *)-1
130#define TO_VBA		(struct device *)-2
131
132struct config {
133	char	*c_dev;
134	char	*s_sysname;
135};
136
137/*
138 * Config has a global notion of which machine type is
139 * being used.  It uses the name of the machine in choosing
140 * files and directories.  Thus if the name of the machine is ``vax'',
141 * it will build from ``Makefile.vax'' and use ``../vax/inline''
142 * in the makerules, etc.
143 */
144int	machine;
145char	*machinename;
146#define	MACHINE_VAX	1
147#define	MACHINE_TAHOE	2
148#define MACHINE_HP300	3
149#define	MACHINE_I386	4
150#define MACHINE_MIPS	5
151#define MACHINE_PMAX	6
152#define MACHINE_LUNA68K	7
153#define MACHINE_NEWS3400	8
154
155/*
156 * For each machine, a set of CPU's may be specified as supported.
157 * These and the options (below) are put in the C flags in the makefile.
158 */
159struct cputype {
160	char	*cpu_name;
161	struct	cputype *cpu_next;
162} *cputype;
163
164/*
165 * A set of options may also be specified which are like CPU types,
166 * but which may also specify values for the options.
167 * A separate set of options may be defined for make-style options.
168 */
169struct opt {
170	char	*op_name;
171	char	*op_value;
172	struct	opt *op_next;
173} *opt, *mkopt;
174
175char	*ident;
176char	*ns();
177char	*tc();
178char	*qu();
179char	*get_word();
180char	*get_quoted_word();
181char	*path();
182char	*raise();
183
184int	do_trace;
185
186#if MACHINE_VAX
187int	seen_mba, seen_uba;
188#endif
189#if MACHINE_TAHOE
190int	seen_vba;
191#endif
192#if MACHINE_I386
193int	seen_isa;
194#endif
195int	seen_cd;
196
197struct	device *connect();
198struct	device *dtab;
199dev_t	nametodev();
200char	*devtoname();
201
202char	errbuf[80];
203int	yyline;
204
205struct	file_list *ftab, *conf_list, **confp, *comp_list, **compp;
206
207int	zone, hadtz;
208int	dst;
209int	profiling;
210int	debugging;
211
212int	maxusers;
213u_int	loadaddress;
214
215#define eq(a,b)	(!strcmp(a,b))
216