xref: /netbsd/sys/arch/acorn32/include/bootconfig.h (revision bf9ec67e)
1 /*	$NetBSD: bootconfig.h,v 1.3 2002/02/11 18:47:37 reinoud Exp $	*/
2 
3 /*
4  * Copyright (c) 2002 Reinoud Zandijk.
5  * Copyright (c) 1994 Mark Brinicombe.
6  * Copyright (c) 1994 Brini.
7  * All rights reserved.
8  *
9  * This code is derived from software written for Brini by Mark Brinicombe
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. All advertising materials mentioning features or use of this software
20  *    must display the following acknowledgement:
21  *	This product includes software developed by Mark Brinicombe
22  *	for the NetBSD Project.
23  * 4. The name of the company nor the name of the author may be used to
24  *    endorse or promote products derived from this software without specific
25  *    prior written permission.
26  *
27  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
28  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
29  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
30  * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
31  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37  * SUCH DAMAGE.
38  *
39  * boot configuration structures
40  *
41  */
42 
43 #if defined(_KERNEL)
44 
45 
46 /* get some spare blocks ;) */
47 #define DRAM_BLOCKS	32
48 #define VRAM_BLOCKS	16
49 
50 
51 typedef struct {
52 	u_int address;
53 	u_int pages;
54 	u_int flags;
55 } phys_mem;
56 
57 
58 typedef struct _BootConfig {
59 	u_int magic;
60 	u_int version;			/* version 2+ */
61 
62 	u_char machine_id[4];
63 	char kernelname[80];
64 	char args[512];			/* 512 bytes is better than 4096 */
65 
66 	u_int kernvirtualbase;		/* not used now */
67 	u_int kernphysicalbase;		/* not used now */
68 	u_int kernsize;
69 	u_int scratchvirtualbase;
70 	u_int scratchphysicalbase;
71 	u_int scratchsize;
72 
73 	u_int ksym_start;
74 	u_int ksym_end;
75 
76 	u_int MDFvirtualbase;		/* not used yet */
77 	u_int MDFphysicalbase;		/* not used yet */
78 	u_int MDFsize;			/* not used yet */
79 
80 	u_int display_phys;
81 	u_int display_start;
82 	u_int display_size;
83 	u_int width;
84 	u_int height;
85 	u_int log2_bpp;
86 	u_int framerate;
87 
88 	char reserved[512];		/* future expansion */
89 
90 	u_int pagesize;
91 	u_int drampages;
92 	u_int vrampages;
93 	u_int dramblocks;
94 	u_int vramblocks;
95 
96 	phys_mem dram[DRAM_BLOCKS];
97 	phys_mem vram[VRAM_BLOCKS];
98 
99 } BootConfig;
100 
101 
102 /************ compat stuff ************/
103 
104 typedef struct {
105 	u_int address;
106 	u_int pages;
107 } phys_mem_v1;
108 
109 
110 typedef struct {
111 	u_int kernvirtualbase;
112 	u_int kernphysicalbase;
113 	u_int kernsize;
114 	u_int argvirtualbase;
115 	u_int argphysicalbase;
116 	u_int argsize;
117 	u_int scratchvirtualbase;
118 	u_int scratchphysicalbase;
119 	u_int scratchsize;
120 
121 	u_int display_start;
122 	u_int display_size;
123 	u_int width;
124 	u_int height;
125 	u_int log2_bpp;
126 
127 	phys_mem_v1 dram[4];
128 	phys_mem_v1 vram[1];
129 
130 	u_int dramblocks;
131 	u_int vramblocks;
132 	u_int pagesize;
133 	u_int drampages;
134 	u_int vrampages;
135 
136 	char kernelname[80];
137 
138 	u_int framerate;
139 	u_char machine_id[4];
140 	u_int magic;
141 	u_int display_phys;
142 } BootConfig_v1;
143 
144 /************ end compat stuff ***********/
145 
146 #define BOOTCONFIG_MAGIC     0x43112233
147 #define BOOTCONFIG_VERSION   	    0x2
148 
149 extern BootConfig bootconfig;
150 #endif	/* _KERNEL */
151 
152 
153 #ifdef _KERNEL
154 #define BOOTOPT_TYPE_BOOLEAN		0
155 #define BOOTOPT_TYPE_STRING		1
156 #define BOOTOPT_TYPE_INT		2
157 #define BOOTOPT_TYPE_BININT		3
158 #define BOOTOPT_TYPE_HEXINT		4
159 #define BOOTOPT_TYPE_MASK		7
160 
161 int get_bootconf_option __P((char *string, char *option, int type, void *result));
162 
163 extern char *boot_args;
164 extern char *boot_file;
165 #endif	/* _KERNEL */
166 
167 
168 /* End of bootconfig.h */
169