/*
 * Copyright (c) 1984, 1985, 1986, 1987, 1988, 1989 
 * Sequent Computer Systems, Inc.   All rights reserved.
 *  
 * This software is furnished under a license and may be used
 * only in accordance with the terms of that license and with the
 * inclusion of the above copyright notice.   This software may not
 * be provided or otherwise made available to, or used by, any
 * other person.  No title to or ownership of the software is
 * hereby transferred.
 */
#ident	"$Header: system.std 1.41 90/06/27 $"

#include "sys/param.h"
#include "sys/types.h"
#include "sys/sysmacros.h"
#include "sys/conf.h"
#include "sys/swap.h"
#include "config.h"
#include "sys/buf.h"
#include "sys/session.h"
#include "sys/stream.h"
#include "sys/autoconf.h"
#include "sys/systm.h"

extern	int nulldev();
extern	int nodev();

dev_t	swapdev = makedev(SW_BLOCK, 0);	/* virtual swap device */

 struct genericconf {
	char	*gc_name;
	dev_t	gc_root;
 } genericconf[] = {
#ifdef	ZD_BLOCK
	{ "zd" , makedev(ZD_BLOCK,0) },
#endif
#ifdef	SD_BLOCK
	{ "sd" , makedev(SD_BLOCK,0) },
#endif
#ifdef	WD_BLOCK
	{ "wd" , makedev(WD_BLOCK,0) },
#endif
#ifdef	FD_BLOCK
	{ "fd" , makedev(FD_BLOCK,0) },
#endif
#ifdef	HD_BLOCK
	{ "hd" , makedev(HD_BLOCK,0) },
#endif
#ifdef	AD_BLOCK
	{ "ad" , makedev(AD_BLOCK,0) },
#endif
	{ (char *)NULL },
 };

/* vlsi is a pseudo char device driver */
int	vlsi_c_major = VLSI_CHARACTER;
extern void vlsi_init();
/* kbd is a streams module */
extern	struct streamtab	kbdinfo;
extern void kbd_init();
/* cn is a pseudo char device driver */
int	cn_c_major = CN_CHARACTER;
extern void cn_init();
/* strpipe is a pseudo stream char device driver */
int	strpipe_c_major = STRPIPE_CHARACTER;
/* strpipe is a streams driver */
extern	struct	streamtab	strpipeinfo;
extern void strpipe_init();
/* vtoc is a pseudo char device driver */
int	vtoc_c_major = VTOC_CHARACTER;
extern void vtoc_init();
/* cmpt is a pseudo char device driver */
int	cmpt_c_major = CMPT_CHARACTER;
extern void cmpt_init();
/* timods is a streams module */
extern	struct streamtab	timodinfo;
extern void timod_init();
/* tli is a streams module */
extern	struct streamtab	tirdwrinfo;
extern void tirdwr_init();
/* pmap is a pseudo char device driver */
int	pmap_c_major = PMAP_CHARACTER;
extern void pmap_init();
/* usclk is a pseudo char device driver */
int	usclk_c_major = USCLK_CHARACTER;
extern void usclk_init();
/* gentty is a pseudo char device driver */
int	sy_c_major = SY_CHARACTER;
extern void sy_init();
/* lpmod is a streams module */
extern	struct streamtab	lpmodinfo;
extern void lpmod_init();
/* ld0 is a streams module */
extern	struct streamtab	ldinfo;
/* eld0 is a streams module alias for ld0 */
extern	struct streamtab	eld0info;
extern void ld_init();
/* clone is a pseudo stream char device driver */
int	clone_c_major = CLONE_CHARACTER;
/* clone is a streams driver */
extern	struct	streamtab	cloneinfo;
/* log is a pseudo stream char device driver */
int	log_c_major = LOG_CHARACTER;
/* log is a streams driver */
extern	struct	streamtab	loginfo;
extern void log_init();
/* ptm is a pseudo stream char device driver */
int	ptm_c_major = PTM_CHARACTER;
/* ptm is a streams driver */
extern	struct	streamtab	ptminfo;
/* pts is a pseudo stream char device driver */
int	pts_c_major = PTS_CHARACTER;
/* pts is a streams driver */
extern	struct	streamtab	ptsinfo;
/* pty is a pseudo char device driver */
extern void pty_init();
/* xs is a stream char device driver */
int	xs_c_major = XS_CHARACTER;
/* xs is a streams driver */
extern	struct	streamtab	xsinfo;
extern int xs_probe();
extern void xs_init();
extern void xs_intr();
/* wp is a pseudo stream char device driver */
int	wp_c_major = WP_CHARACTER;
/* wp is a streams driver */
extern	struct	streamtab	wpinfo;
/* wd is a block device driver */
int	wd_b_major = WD_BLOCK;
/* wd is a char device driver */
int	wd_c_major = WD_CHARACTER;
extern int wd_probe();
extern void wd_init();
extern void wd_intr();
/* tg is a char device driver */
int	tg_c_major = TG_CHARACTER;
extern int tg_probe();
extern void tg_init();
extern void tg_intr();
/* tm is a char device driver */
int	tm_c_major = TM_CHARACTER;
extern int tm_probe();
extern void tm_init();
extern void tm_intr();
/* sc is a pseudo stream char device driver */
int	sc_c_major = SC_CHARACTER;
/* sc is a streams driver */
extern	struct	streamtab	scinfo;
/* ss is a pseudo char device driver */
int	ss_c_major = SS_CHARACTER;
/* ssm is a bus drivers*/
extern int ssm_probe();
extern void ssm_init();
/* vme is a bus type */
/* ssm_scsi is a bus type */
/* xt is a char device driver */
int	xt_c_major = XT_CHARACTER;
extern int xt_probe();
extern void xt_init();
extern void xt_intr();
/* st is a stream char device driver */
int	st_c_major = ST_CHARACTER;
/* st is a streams driver */
extern	struct	streamtab	stinfo;
extern int st_probe();
extern void st_init();
extern void st_intr();
/* lp is a stream char device driver */
int	lp_c_major = LP_CHARACTER;
/* lp is a streams driver */
extern	struct	streamtab	lpinfo;
extern int lp_probe();
extern void lp_init();
extern void lp_intr();
/* kmmem is a pseudo char device driver */
int	kmm_c_major = KMM_CHARACTER;
extern void kmm_init();
/* mbad is a bus drivers*/
extern int mbad_probe();
extern void mbad_init();
/* multibus is a bus type */
/* zd is a block device driver */
int	zd_b_major = ZD_BLOCK;
/* zd is a char device driver */
int	zd_c_major = ZD_CHARACTER;
extern int zd_probe();
extern void zd_init();
extern void zd_intr();
/* zdc is a bus drivers*/
extern int zdc_probe();
extern void zdc_init();
/* smde is a bus type */
/* sd is a block device driver */
int	sd_b_major = SD_BLOCK;
/* sd is a char device driver */
int	sd_c_major = SD_CHARACTER;
extern int sd_probe();
extern void sd_init();
extern void sd_intr();
/* ts is a char device driver */
int	ts_c_major = TS_CHARACTER;
extern int ts_probe();
extern void ts_init();
extern void ts_intr();
/* co is a pseudo stream char device driver */
int	co_c_major = CO_CHARACTER;
/* co is a streams driver */
extern	struct	streamtab	coinfo;
/* sm is a pseudo char device driver */
int	sm_c_major = SM_CHARACTER;
/* sec is a bus drivers*/
extern int sec_probe();
extern void sec_init();
/* sec_scsi is a bus type */
/* consmem is a pseudo char device driver */
int	consmem_c_major = CONSMEM_CHARACTER;
extern void consmem_init();
/* ufs is a filesystem */
/* swap is a block device driver */
int	sw_b_major = SW_BLOCK;
/* swap is a pseudo char device driver */
int	sw_c_major = SW_CHARACTER;
extern int swread();
extern int swwrite();
extern int swstrat();
extern int swminphys();
/* mem is a pseudo char device driver */
int	mm_c_major = MM_CHARACTER;
extern void mm_init();
extern int mmopen();
extern int mmread();
extern int mmwrite();
extern int mmmmap();
/* sb8000 is a bus type */
/* sb8000 is a bus drivers*/
int	bdevcnt = 35;
#define T_NULL	(struct tty*)NULL
#define S_NULL	(struct streamtab *)NULL
int cdevcnt = 92;
int cstrcnt = 55;
struct	streamtab	*cstrtab[] = {
/* 00 */ S_NULL,
/* 01 */ &coinfo,
/* 02 */ S_NULL,
/* 03 */ S_NULL,
/* 04 */ S_NULL,
/* 05 */ &cloneinfo,
/* 06 */ &stinfo,
/* 07 */ S_NULL,
/* 08 */ S_NULL,
/* 09 */ S_NULL,
/* 10 */ S_NULL,
/* 11 */ S_NULL,
/* 12 */ &lpinfo,
/* 13 */ S_NULL,
/* 14 */ S_NULL,
/* 15 */ S_NULL,
/* 16 */ S_NULL,
/* 17 */ S_NULL,
/* 18 */ S_NULL,
/* 19 */ S_NULL,
/* 20 */ &wpinfo,
/* 21 */ S_NULL,
/* 22 */ &scinfo,
/* 23 */ &xsinfo,
/* 24 */ &loginfo,
/* 25 */ S_NULL,
/* 26 */ S_NULL,
/* 27 */ S_NULL,
/* 28 */ S_NULL,
/* 29 */ S_NULL,
/* 30 */ S_NULL,
/* 31 */ S_NULL,
/* 32 */ S_NULL,
/* 33 */ S_NULL,
/* 34 */ S_NULL,
/* 35 */ S_NULL,
/* 36 */ S_NULL,
/* 37 */ S_NULL,
/* 38 */ S_NULL,
/* 39 */ S_NULL,
/* 40 */ S_NULL,
/* 41 */ S_NULL,
/* 42 */ S_NULL,
/* 43 */ S_NULL,
/* 44 */ S_NULL,
/* 45 */ S_NULL,
/* 46 */ S_NULL,
/* 47 */ S_NULL,
/* 48 */ S_NULL,
/* 49 */ S_NULL,
/* 50 */ S_NULL,
/* 51 */ S_NULL,
/* 52 */ &ptsinfo,
/* 53 */ &ptminfo,
/* 54 */ &strpipeinfo,

};
/* filesystem table */
extern	struct	vfsops	ufs_vfsops;

struct vfsops *vfssw[] = {
(struct vfsops *)0,	/* 0 is always 0 - no filesystem */
&ufs_vfsops,		/* 1 */
};

int	mount_ntypes = 2;

struct fmodsw fmodsw[] = {
	{ "kbd",&kbdinfo },
	{ "timod",&timodinfo },
	{ "tirdwr",&tirdwrinfo },
	{ "lpmod",&lpmodinfo },
	{ "ld",&ldinfo },
	{ "eld0",&eld0info },	/* streams module alias for: ld0 */
	{ NULL,NULL}
};
int fmodcnt = 6;

void (*io_init[])() = {
	kbd_init,
	timod_init,
	tirdwr_init,
	lpmod_init,
	ld_init,
	0,
};
extern void	usclk_init();
extern void	pmap_init();
extern void	log_init();
extern void	mm_init();
extern void	kmm_init();
extern void	sy_init();
extern void	cmpt_init();
extern void	vtoc_init();
extern void	pty_init();
extern void	strpipe_init();
extern void	cn_init();
extern void	consmem_init();
extern void	vlsi_init();

struct pseudo_dev pseudo_dev[] = {
{	"usclk", 1, usclk_init},
{	"pmap", 32, pmap_init},
{	"log", 5, log_init},
{	"mem", -2, mm_init},
{	"kmmem", -2, kmm_init},
{	"gentty", -2, sy_init},
{	"cmpt", -2, cmpt_init},
{	"vtoc", -2, vtoc_init},
{	"pty", 100, pty_init},
{	"strpipe", 100, strpipe_init},
{	"cn", -2, cn_init},
{	"clone", -2, NULL },
{	"consmem", -2, consmem_init},
{	"vlsi", -2, vlsi_init},
{	0 },
};

void	(*init_tab[])() = {
	0,
};


extern nosyscall();
extern syscall();
extern char *syscall1names[];
extern int nsysent1;
extern struct sysent sysent1[];
extern char *syscall2names[];
extern int nsysent2;
extern struct sysent sysent2[];
struct syscallhandler syscall_handler[] = {
	{nosyscall, 0, 0, 0},	 /* [0] */
	{syscall,sysent1,&nsysent1,syscall1names},	 /* [1] */
	{syscall,sysent2,&nsysent2,syscall2names},	 /* [2] */
};
int syscall_nhandler = 3;

char *bus_type[] = {
	"nobus",
	"sb8000",
	"sec_scsi",
	"smde",
	"multibus",
	"ssm_scsi",
	"vme",
	(char *)NULL,
};

#include "sys/mbad_device.h"
struct mbad_device mbad_devices[] = {
	{-SB8000,-1, 0, 1, 0, &drivers[0]},
	{-SB8000,-1, 0, 1, 0, &drivers[0]},
};
#include "sys/sec_device.h"
struct sec_device sec_devices[] = {
	{-SB8000,-1, 0, 1, 0, &drivers[1]},
	{-SB8000,-1, 0, 1, 0, &drivers[1]},
};
#include "sys/ssm_device.h"
struct ssm_device ssm_devices[] = {
	{-SB8000,-1, 0, 1, 0, &drivers[2]},
	{-SB8000,-1, 0, 1, 0, &drivers[2]},
	{-SB8000,-1, 0, 1, 0, &drivers[2]},
};
#include "sys/zdc_device.h"
struct zdc_device zdc_devices[] = {
	{-SB8000,-1, 0, 1, 0, &drivers[3]},
	{-SB8000,-1, 0, 1, 0, &drivers[3]},
	{-SB8000,-1, 0, 1, 0, &drivers[3]},
	{-SB8000,-1, 0, 1, 0, &drivers[3]},
};
#include "sys/lp_device.h"
struct lp_device lp_devices[] = {
	{-MULTIBUS,-1, 1024, 1, 4, &drivers[4]},
};
#include "sys/st_device.h"
struct st_device st_devices[] = {
	{-MULTIBUS,-1, 1024, 1024, 32, &drivers[5]},
	{-MULTIBUS,-1, 1024, 1024, 32, &drivers[5]},
	{-MULTIBUS,-1, 1024, 1024, 32, &drivers[5]},
	{-MULTIBUS,-1, 1024, 1024, 32, &drivers[5]},
};
#include "sys/xt_device.h"
struct xt_device xt_devices[] = {
	{-MULTIBUS,-1, 33792, 1, 1, &drivers[6]},
};
#include "sys/sd_device.h"
struct sd_device sd_devices[] = {
	{-SEC_SCSI,-1, 0, 1, 0, &drivers[7]},
	{-SEC_SCSI,-1, 0, 1, 0, &drivers[7]},
	{-SEC_SCSI,-1, 0, 1, 0, &drivers[7]},
	{-SEC_SCSI,-1, 0, 1, 0, &drivers[7]},
};
#include "sys/wd_device.h"
struct wd_device wd_devices[] = {
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
	{-SSM_SCSI,-1, 131072, 1, 2, &drivers[8]},
};
#include "sys/ts_device.h"
struct ts_device ts_devices[] = {
	{3,4, 0, 1, 0, &drivers[9]},
};
#include "sys/tm_device.h"
struct tm_device tm_devices[] = {
	{5,7, 131072, 1, 2, &drivers[10]},
};
#include "sys/tg_device.h"
struct tg_device tg_devices[] = {
	{5,5, 262144, 1, 1, &drivers[11]},
};
#include "sys/xs_device.h"
struct xs_device xs_devices[] = {
	{-VME,-1, 1024, 1, 16, &drivers[12]},
	{-VME,-1, 1024, 1, 16, &drivers[12]},
	{-VME,-1, 1024, 1, 16, &drivers[12]},
	{-VME,-1, 1024, 1, 16, &drivers[12]},
	{-VME,-1, 1024, 1, 16, &drivers[12]},
};
#include "sys/zd_device.h"
struct zd_device zd_devices[] = {
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
	{-SMDE,-1, 0, 1, 0, &drivers[13]},
};

struct driver_module drivers[] = {
{    "mbad",   2, 0, mbad_probe, mbad_init, NULL, NULL, 
	 mbad_on_busses,(struct gen_device *)mbad_devices,
	 sizeof (struct mbad_device),},
{     "sec",   2, 0, sec_probe, sec_init, NULL, NULL, 
	 sec_on_busses,(struct gen_device *)sec_devices,
	 sizeof (struct sec_device),},
{     "ssm",   3, 0, ssm_probe, ssm_init, NULL, NULL, 
	 ssm_on_busses,(struct gen_device *)ssm_devices,
	 sizeof (struct ssm_device),},
{     "zdc",   4, 0, zdc_probe, zdc_init, NULL, NULL, 
	 zdc_on_busses,(struct gen_device *)zdc_devices,
	 sizeof (struct zdc_device),},
{      "lp",   1, 0, lp_probe, lp_init, lp_intr, NULL, 
	 lp_on_busses,(struct gen_device *)lp_devices,
	 sizeof (struct lp_device),},
{      "st",   4, 0, st_probe, st_init, st_intr, NULL, 
	 st_on_busses,(struct gen_device *)st_devices,
	 sizeof (struct st_device),},
{      "xt",   1, 0, xt_probe, xt_init, xt_intr, NULL, 
	 xt_on_busses,(struct gen_device *)xt_devices,
	 sizeof (struct xt_device),},
{      "sd",   4, 0, sd_probe, sd_init, sd_intr, NULL, 
	 sd_on_busses,(struct gen_device *)sd_devices,
	 sizeof (struct sd_device),},
{      "wd",   6, 0, wd_probe, wd_init, wd_intr, NULL, 
	 wd_on_busses,(struct gen_device *)wd_devices,
	 sizeof (struct wd_device),},
{      "ts",   1, 0, ts_probe, ts_init, ts_intr, NULL, 
	 ts_on_busses,(struct gen_device *)ts_devices,
	 sizeof (struct ts_device),},
{      "tm",   1, 0, tm_probe, tm_init, tm_intr, NULL, 
	 tm_on_busses,(struct gen_device *)tm_devices,
	 sizeof (struct tm_device),},
{      "tg",   1, 0, tg_probe, tg_init, tg_intr, NULL, 
	 tg_on_busses,(struct gen_device *)tg_devices,
	 sizeof (struct tg_device),},
{      "xs",   5, 0, xs_probe, xs_init, xs_intr, NULL, 
	 xs_on_busses,(struct gen_device *)xs_devices,
	 sizeof (struct xs_device),},
{      "zd",  32, 0, zd_probe, zd_init, zd_intr, NULL, 
	 zd_on_busses,(struct gen_device *)zd_devices,
	 sizeof (struct zd_device),},
{	0 },
};

struct bus busses[] = {
/* 0 */{ SB8000, },
/* 1 */ { MULTIBUS, (struct gen_device *)&mbad_devices[0],
	mbad_multibus_probe_setup, 
	mbad_multibus_alloc_maps, 
	mbad_multibus_dma_setup, 
	mbad_multibus_dma_remap, 
	mbad_multibus_dma_done, 
	mbad_multibus_dma_flush, 
	mbad_multibus_intr_setup, 
	mbad_multibus_ack_int, },
/* 2 */ { MULTIBUS, (struct gen_device *)&mbad_devices[1],
	mbad_multibus_probe_setup, 
	mbad_multibus_alloc_maps, 
	mbad_multibus_dma_setup, 
	mbad_multibus_dma_remap, 
	mbad_multibus_dma_done, 
	mbad_multibus_dma_flush, 
	mbad_multibus_intr_setup, 
	mbad_multibus_ack_int, },
/* 3 */ { SEC_SCSI, (struct gen_device *)&sec_devices[0],
	sec_sec_scsi_probe_setup, 
	sec_sec_scsi_alloc_maps, 
	sec_sec_scsi_dma_setup, 
	sec_sec_scsi_dma_remap, 
	sec_sec_scsi_dma_done, 
	sec_sec_scsi_dma_flush, 
	sec_sec_scsi_intr_setup, 
	sec_sec_scsi_ack_int, },
/* 4 */ { SEC_SCSI, (struct gen_device *)&sec_devices[1],
	sec_sec_scsi_probe_setup, 
	sec_sec_scsi_alloc_maps, 
	sec_sec_scsi_dma_setup, 
	sec_sec_scsi_dma_remap, 
	sec_sec_scsi_dma_done, 
	sec_sec_scsi_dma_flush, 
	sec_sec_scsi_intr_setup, 
	sec_sec_scsi_ack_int, },
/* 5 */ { SSM_SCSI, (struct gen_device *)&ssm_devices[0],
	ssm_ssm_scsi_probe_setup, 
	ssm_ssm_scsi_alloc_maps, 
	ssm_ssm_scsi_dma_setup, 
	ssm_ssm_scsi_dma_remap, 
	ssm_ssm_scsi_dma_done, 
	ssm_ssm_scsi_dma_flush, 
	ssm_ssm_scsi_intr_setup, 
	ssm_ssm_scsi_ack_int, },
/* 6 */ { SSM_SCSI, (struct gen_device *)&ssm_devices[1],
	ssm_ssm_scsi_probe_setup, 
	ssm_ssm_scsi_alloc_maps, 
	ssm_ssm_scsi_dma_setup, 
	ssm_ssm_scsi_dma_remap, 
	ssm_ssm_scsi_dma_done, 
	ssm_ssm_scsi_dma_flush, 
	ssm_ssm_scsi_intr_setup, 
	ssm_ssm_scsi_ack_int, },
/* 7 */ { SSM_SCSI, (struct gen_device *)&ssm_devices[2],
	ssm_ssm_scsi_probe_setup, 
	ssm_ssm_scsi_alloc_maps, 
	ssm_ssm_scsi_dma_setup, 
	ssm_ssm_scsi_dma_remap, 
	ssm_ssm_scsi_dma_done, 
	ssm_ssm_scsi_dma_flush, 
	ssm_ssm_scsi_intr_setup, 
	ssm_ssm_scsi_ack_int, },
/* 8 */ { VME, (struct gen_device *)&ssm_devices[0],
	ssm_vme_probe_setup, 
	ssm_vme_alloc_maps, 
	ssm_vme_dma_setup, 
	ssm_vme_dma_remap, 
	ssm_vme_dma_done, 
	ssm_vme_dma_flush, 
	ssm_vme_intr_setup, 
	ssm_vme_ack_int, },
/* 9 */ { VME, (struct gen_device *)&ssm_devices[1],
	ssm_vme_probe_setup, 
	ssm_vme_alloc_maps, 
	ssm_vme_dma_setup, 
	ssm_vme_dma_remap, 
	ssm_vme_dma_done, 
	ssm_vme_dma_flush, 
	ssm_vme_intr_setup, 
	ssm_vme_ack_int, },
/* 10 */ { VME, (struct gen_device *)&ssm_devices[2],
	ssm_vme_probe_setup, 
	ssm_vme_alloc_maps, 
	ssm_vme_dma_setup, 
	ssm_vme_dma_remap, 
	ssm_vme_dma_done, 
	ssm_vme_dma_flush, 
	ssm_vme_intr_setup, 
	ssm_vme_ack_int, },
/* 11 */ { SMDE, (struct gen_device *)&zdc_devices[0],
	zdc_smde_probe_setup, 
	zdc_smde_alloc_maps, 
	zdc_smde_dma_setup, 
	zdc_smde_dma_remap, 
	zdc_smde_dma_done, 
	zdc_smde_dma_flush, 
	zdc_smde_intr_setup, 
	zdc_smde_ack_int, },
/* 12 */ { SMDE, (struct gen_device *)&zdc_devices[1],
	zdc_smde_probe_setup, 
	zdc_smde_alloc_maps, 
	zdc_smde_dma_setup, 
	zdc_smde_dma_remap, 
	zdc_smde_dma_done, 
	zdc_smde_dma_flush, 
	zdc_smde_intr_setup, 
	zdc_smde_ack_int, },
/* 13 */ { SMDE, (struct gen_device *)&zdc_devices[2],
	zdc_smde_probe_setup, 
	zdc_smde_alloc_maps, 
	zdc_smde_dma_setup, 
	zdc_smde_dma_remap, 
	zdc_smde_dma_done, 
	zdc_smde_dma_flush, 
	zdc_smde_intr_setup, 
	zdc_smde_ack_int, },
/* 14 */ { SMDE, (struct gen_device *)&zdc_devices[3],
	zdc_smde_probe_setup, 
	zdc_smde_alloc_maps, 
	zdc_smde_dma_setup, 
	zdc_smde_dma_remap, 
	zdc_smde_dma_done, 
	zdc_smde_dma_flush, 
	zdc_smde_intr_setup, 
	zdc_smde_ack_int, },
{ NOBUS },
};


