Home | History | Annotate | Line # | Download | only in next68k
      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 (at) 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