xref: /netbsd/sys/arch/next68k/next68k/nextrom.h (revision 1455901e)
1 /*	$NetBSD: nextrom.h,v 1.13 2023/02/11 02:33:27 tsutsui Exp $	*/
2 /*
3  * Copyright (c) 1998 Darrin B. Jewell
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #ifndef NEXTROM_H_INCLUDED
28 #define NEXTROM_H_INCLUDED
29 
30 #define MG_simm 0
31 #define MG_flags 4
32 #define MG_sid 6
33 #define MG_pagesize 10
34 #define MG_mon_stack 14
35 #define MG_vbr 18
36 #define MG_nvram 22
37 #define MG_inetntoa 54
38 #define MG_inputline 72
39 #define MG_region 200
40 #define MG_alloc_base 232
41 #define MG_alloc_brk 236
42 #define MG_boot_dev 240
43 #define MG_boot_arg 244
44 #define MG_boot_info 248
45 #define MG_boot_file 252
46 #define MG_bootfile 256
47 #define MG_boot_how 320
48 #define MG_km 324
49 #define MG_km_flags 368
50 #define MG_mon_init 370
51 #define MG_si 374
52 #define MG_time 378
53 #define MG_sddp 382
54 #define MG_dgp 386
55 #define MG_s5cp 390
56 #define MG_odc 394
57 #define MG_odd 398
58 #define MG_radix 402
59 #define MG_dmachip 404
60 #define MG_diskchip 408
61 #define MG_intrstat 412
62 #define MG_intrmask 416
63 #define MG_nofault 420
64 #define MG_fmt 424
65 #define MG_addr 426
66 #define MG_na 458
67 #define MG_mx 462
68 #define MG_my 466
69 #define MG_cursor_save 470
70 #define MG_getc 726
71 #define MG_try_getc 730
72 #define MG_putc 734
73 #define MG_alert 738
74 #define MG_alert_confirm 742
75 #define MG_alloc 746
76 #define MG_boot_slider 750
77 #define MG_eventc 754
78 #define MG_event_high 758
79 #define MG_animate 762
80 #define MG_anim_time 766
81 #define MG_scsi_intr 770
82 #define MG_scsi_intrarg 774
83 #define MG_minor 778
84 #define MG_seq 780
85 #define MG_anim_run 782
86 #define MG_major 786
87 #define MG_con_slot 844
88 #define MG_con_fbnum 845
89 #define MG_con_map_vaddr0 860
90 #define MG_con_map_vaddr1 872
91 #define MG_con_map_vaddr2 884
92 #define MG_con_map_vaddr3 896
93 #define MG_con_map_vaddr4 908
94 #define MG_con_map_vaddr5 920
95 
96 
97 /*
98  * Darrin B Jewell <jewell@mit.edu>  Mon Jan 19 13:17:20 1998
99  * I made up these:
100  */
101 #define MG_clientetheraddr 788
102 #define MG_machine_type    936
103 #define MG_board_rev       937
104 
105 #if 0
106 
107 /*
108  *  The ROM monitor uses the old structure alignment for backward
109  *  compatibility with previous ROMs.  The old alignment is enabled
110  *  with the following pragma.  The kernel uses the "MG" macro to
111  *  construct an old alignment offset into the mon_global structure.
112  *  The kernel file <mon/assym.h> should be copied from the "assym.h"
113  *  found in the build directory of the current ROM release.
114  *  It will contain the proper old alignment offset constants.
115  */
116 #if	MONITOR
117 #pragma	CC_OLD_STORAGE_LAYOUT_ON
118 #else	MONITOR
119 #import <mon/assym.h>
120 #define	MG(type, off) \
121 	((type) ((u_int) (mg) + off))
122 #endif	/* MONITOR */
123 
124 #import <mon/nvram.h>
125 #import <mon/region.h>
126 #import <mon/tftp.h>
127 #import <mon/sio.h>
128 #import <mon/animate.h>
129 #import <mon/kmreg.h>
130 #import <next/cpu.h>
131 #import <next/machparam.h>
132 
133 #define	LMAX		128
134 #define	NBOOTFILE	64
135 #define	NADDR		8
136 
137 struct mon_global {
138 	char mg_simm[N_SIMM];	/* MUST BE FIRST (accessed early by locore) */
139 	char mg_flags;		/* MUST BE SECOND */
140 #define	MGF_LOGINWINDOW		0x80
141 #define	MGF_UART_SETUP		0x40
142 #define	MGF_UART_STOP		0x20
143 #define	MGF_UART_TYPE_AHEAD	0x10
144 #define	MGF_ANIM_RUN		0x08
145 #define	MGF_SCSI_INTR		0x04
146 #define	MGF_KM_EVENT		0x02
147 #define	MGF_KM_TYPE_AHEAD	0x01
148 	u_int mg_sid, mg_pagesize, mg_mon_stack, mg_vbr;
149 	struct nvram_info mg_nvram;
150 	char mg_inetntoa[18];
151 	char mg_inputline[LMAX];
152 	struct mon_region mg_region[N_SIMM];
153 	void *mg_alloc_base, mg_alloc_brk;
154 	char *mg_boot_dev, *mg_boot_arg, *mg_boot_info, *mg_boot_file;
155 	char mg_bootfile[NBOOTFILE];
156 	enum SIO_ARGS mg_boot_how;
157 	struct km_mon km;
158 	int mon_init;
159 	struct sio *mg_si;
160 	int mg_time;
161 	char *mg_sddp;
162 	char *mg_dgp;
163 	char *mg_s5cp;
164 	char *mg_odc, *mg_odd;
165 	char mg_radix;
166 	int mg_dmachip;
167 	int mg_diskchip;
168 	volatile int *mg_intrstat;
169 	volatile int *mg_intrmask;
170 	void (*mg_nofault)();
171 	char fmt;
172 	int addr[NADDR], na;
173 	int	mx, my;			/* mouse location */
174 	u_int	cursor_save[2][32];
175 	int (*mg_getc)(), (*mg_try_getc)(), (*mg_putc)();
176 	int (*mg_alert)(), (*mg_alert_confirm)();
177 	void *(*mg_alloc)();
178 	int (*mg_boot_slider)();
179 	volatile u_char *eventc_latch;
180 	volatile u_int event_high;
181 	struct animation *mg_animate;
182 	int mg_anim_time;
183 	void (*mg_scsi_intr)();
184 	int mg_scsi_intrarg;
185 	short mg_minor, mg_seq;
186 	int (*mg_anim_run)();
187 	short mg_major;
188 	char *mg_clientetheraddr;
189 	int mg_console_i;
190 	int mg_console_o;
191 #define	CONS_I_KBD	0
192 #define	CONS_I_SCC_A	1
193 #define	CONS_I_SCC_B	2
194 #define	CONS_I_NET	3
195 #define	CONS_O_BITMAP	0
196 #define	CONS_O_SCC_A	1
197 #define	CONS_O_SCC_B	2
198 #define	CONS_O_NET	3
199 	char *test_msg;
200 	/* Next entry should be km_coni. Mach depends on this! */
201 	struct km_console_info km_coni;	/* Console configuration info. See kmreg.h */
202 	char *mg_fdgp;
203 	char mg_machine_type, mg_board_rev;
204 	int (*mg_as_tune)();
205 	int mg_flags2;
206 #define	MGF2_PARITY	0x80000000
207 };
208 
209 struct mon_global *restore_mg();
210 void *mon_alloc();
211 
212 #endif /* if 0 */
213 
214 #define	N_SIMM		4		/* number of SIMMs in machine */
215 
216 /* SIMM types */
217 #define SIMM_SIZE       0x03
218 #define	SIMM_SIZE_EMPTY	0x00
219 #define	SIMM_SIZE_16MB	0x01
220 #define	SIMM_SIZE_4MB	0x02
221 #define	SIMM_SIZE_1MB	0x03
222 #define	SIMM_PAGE_MODE	0x04
223 #define	SIMM_PARITY	0x08 /* ?? */
224 
225 /* Space for onboard RAM
226  */
227 #define	MAX_PHYS_SEGS	(N_SIMM + 1)
228 
229 /* Machine types, used in both assembler and C sources. */
230 #define	NeXT_CUBE	0
231 #define	NeXT_WARP9	1
232 #define	NeXT_X15	2
233 #define	NeXT_WARP9C	3
234 #define NeXT_TURBO_MONO	4
235 #define NeXT_TURBO_COLOR 5			/* probed witnessed */
236 #define NeXT_CUBE_TURBO	8
237 
238 #define	ROM_STACK_SIZE	(8192 - 2048)
239 
240 extern uint8_t rom_enetaddr[];
241 extern uint8_t rom_boot_dev[];
242 extern uint8_t rom_boot_arg[];
243 extern uint8_t rom_boot_info[];
244 extern uint8_t rom_boot_file[];
245 extern uint8_t rom_bootfile[];
246 extern char rom_machine_type;
247 
248 extern u_int  monbootflag;
249 
250 #endif /* NEXTROM_H_INCLUDED */
251