#include <sys/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#define N_SIMM 4
#define SIMM_SIZE 0x03
#define SIMM_SIZE_EMPTY 0x00
#define SIMM_SIZE_16MB 0x01
#define SIMM_SIZE_4MB 0x02
#define SIMM_SIZE_1MB 0x03
#define SIMM_PAGE_MODE 0x04
#define SIMM_PARITY 0x08
#define MAX_PHYS_SEGS (N_SIMM + 1)
#define NeXT_CUBE 0
#define NeXT_WARP9 1
#define NeXT_X15 2
#define NeXT_WARP9C 3
#define NeXT_TURBO_MONO 4
#define NeXT_TURBO_COLOR 5
#define ROM_STACK_SIZE (8192 - 2048)
#if 0
#if MONITOR
#pragma CC_OLD_STORAGE_LAYOUT_ON
#else MONITOR
#import <mon/assym.h>
#define MG(type, off) \
((type) ((u_int) (mg) + off))
#endif
#endif
#define LMAX 128
#define NBOOTFILE 64
#define NADDR 8
struct nvram_info {
char data[54-22];
};
struct mon_region {
long first_phys_addr;
long last_phys_addr;
};
enum SIO_ARGS {
SIO_ARGS_max = 1
};
struct sio {
enum SIO_ARGS si_args;
unsigned int si_ctrl, si_unit, si_part;
struct device *si_dev;
unsigned int si_blklen;
unsigned int si_lastlba;
void *si_sadmem;
void *si_protomem;
void *si_devmem;
};
struct km_mon {
char data[370-324];
};
struct km_console_info
{
int pixels_per_word;
int bytes_per_scanline;
int dspy_w;
int dspy_max_w;
int dspy_h;
#define KM_CON_ON_NEXTBUS 1
int flag_bits;
int color[4];
#define KM_HIGH_SLOT 6
char slot_num;
char fb_num;
char byte_lane_id;
int start_access_pfunc;
int end_access_pfunc;
struct {
int phys_addr;
int virt_addr;
int size;
#define KM_CON_MAP_ENTRIES 6
#define KM_CON_PCODE 0
#define KM_CON_FRAMEBUFFER 1
#define KM_CON_BACKINGSTORE 2
} map_addr[KM_CON_MAP_ENTRIES];
int access_stack;
};
#pragma pack(push,2)
struct mon_global {
char mg_simm[N_SIMM];
char mg_flags;
#define MGF_LOGINWINDOW 0x80
#define MGF_UART_SETUP 0x40
#define MGF_UART_STOP 0x20
#define MGF_UART_TYPE_AHEAD 0x10
#define MGF_ANIM_RUN 0x08
#define MGF_SCSI_INTR 0x04
#define MGF_KM_EVENT 0x02
#define MGF_KM_TYPE_AHEAD 0x01
u_int mg_sid, mg_pagesize, mg_mon_stack, mg_vbr;
struct nvram_info mg_nvram;
char mg_inetntoa[18];
char mg_inputline[LMAX];
struct mon_region mg_region[N_SIMM];
void *mg_alloc_base, *mg_alloc_brk;
char *mg_boot_dev, *mg_boot_arg, *mg_boot_info, *mg_boot_file;
char mg_bootfile[NBOOTFILE];
enum SIO_ARGS mg_boot_how;
struct km_mon km;
int mon_init;
struct sio *mg_si;
int mg_time;
char *mg_sddp;
char *mg_dgp;
char *mg_s5cp;
char *mg_odc, *mg_odd;
char mg_radix;
int mg_dmachip;
int mg_diskchip;
volatile int *mg_intrstat;
volatile int *mg_intrmask;
void (*mg_nofault)();
char fmt;
int addr[NADDR], na;
int mx, my;
u_int cursor_save[2][32];
int (*mg_getc)(), (*mg_try_getc)(), (*mg_putc)(int);
int (*mg_alert)(), (*mg_alert_confirm)();
void *(*mg_alloc)();
int (*mg_boot_slider)();
volatile u_char *eventc_latch;
volatile u_int event_high;
struct animation *mg_animate;
int mg_anim_time;
void (*mg_scsi_intr)();
int mg_scsi_intrarg;
short mg_minor, mg_seq;
int (*mg_anim_run)();
short mg_major;
char *mg_clientetheraddr;
int mg_console_i;
int mg_console_o;
#define CONS_I_KBD 0
#define CONS_I_SCC_A 1
#define CONS_I_SCC_B 2
#define CONS_I_NET 3
#define CONS_O_BITMAP 0
#define CONS_O_SCC_A 1
#define CONS_O_SCC_B 2
#define CONS_O_NET 3
char *test_msg;
struct km_console_info km_coni;
char *mg_fdgp;
char mg_machine_type, mg_board_rev;
int (*mg_as_tune)();
int mg_flags2;
#define MGF2_PARITY 0x80000000
volatile struct bmap *mg_bmap_chip;
enum mg_pkg {PKG_CUBE, PKG_NS} mg_pkg;
enum mg_memory_system {MEMSYS_8, MEMSYS_32} mg_memory_system;
enum mg_video_system {VIDSYS_313, VIDSYS_W9C, VIDSYS_PC} mg_video_system;
int mg_cpu_clk;
};
#pragma pack(pop)
extern struct mon_global *mg;
#ifdef __cplusplus
}
#endif