Add the `ac' device (auto-changer) to the isscsidev() macro. (I can't
believe that's been missing for so long!) While I'm here, remove all of the non-hp300 cruft. The hp300 port is the only thing that uses config.old(8) now'a'days. Yes, this is a little embarassing.
This commit is contained in:
parent
9aa03f4dd9
commit
01c816cc43
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: config.h,v 1.19 1995/08/17 17:22:08 thorpej Exp $ */
|
||||
/* $NetBSD: config.h,v 1.20 1996/06/10 02:32:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980 Regents of the University of California.
|
||||
@ -152,13 +152,7 @@ struct config {
|
||||
int machine;
|
||||
char *machinename;
|
||||
char *machinearch;
|
||||
#define MACHINE_VAX 1
|
||||
#define MACHINE_TAHOE 2
|
||||
#define MACHINE_HP300 3
|
||||
#define MACHINE_I386 4
|
||||
#define MACHINE_PC532 5
|
||||
#define MACHINE_PMAX 6
|
||||
#define MACHINE_AMIGA 7
|
||||
#define MACHINE_HP300 1
|
||||
|
||||
/*
|
||||
* For each machine, a set of CPU's may be specified as supported.
|
||||
@ -191,16 +185,6 @@ char *raisestr();
|
||||
|
||||
int do_trace;
|
||||
|
||||
#if MACHINE_VAX
|
||||
int seen_mba, seen_uba;
|
||||
#endif
|
||||
#if MACHINE_TAHOE
|
||||
int seen_vba;
|
||||
#endif
|
||||
#if MACHINE_I386
|
||||
int seen_isa;
|
||||
#endif
|
||||
|
||||
struct device *connect();
|
||||
struct device *dtab;
|
||||
dev_t nametodev();
|
||||
|
@ -75,7 +75,7 @@
|
||||
%type <file> swap_device_spec
|
||||
|
||||
%{
|
||||
/* $NetBSD: config.y,v 1.18 1995/08/17 17:22:10 thorpej Exp $ */
|
||||
/* $NetBSD: config.y,v 1.19 1996/06/10 02:32:21 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 Regents of the University of California.
|
||||
@ -150,34 +150,10 @@ Spec:
|
||||
Config_spec:
|
||||
MACHIN Save_id
|
||||
= {
|
||||
if (!strcmp($2, "vax")) {
|
||||
machine = MACHINE_VAX;
|
||||
machinename = "vax";
|
||||
machinearch = machinename;
|
||||
} else if (!strcmp($2, "tahoe")) {
|
||||
machine = MACHINE_TAHOE;
|
||||
machinename = "tahoe";
|
||||
machinearch = machinename;
|
||||
} else if (!strcmp($2, "hp300")) {
|
||||
if (!strcmp($2, "hp300")) {
|
||||
machine = MACHINE_HP300;
|
||||
machinename = "hp300";
|
||||
machinearch = "m68k";
|
||||
} else if (!strcmp($2, "i386")) {
|
||||
machine = MACHINE_I386;
|
||||
machinename = "i386";
|
||||
machinearch = machinename;
|
||||
} else if (!strcmp($2, "pc532")) {
|
||||
machine = MACHINE_PC532;
|
||||
machinename = "pc532";
|
||||
machinearch = machinename;
|
||||
} else if (!strcmp($2, "pmax")) {
|
||||
machine = MACHINE_PMAX;
|
||||
machinename = "pmax";
|
||||
machinearch = machinename;
|
||||
} else if (!strcmp($2, "amiga")) {
|
||||
machine = MACHINE_AMIGA;
|
||||
machinename = "amiga";
|
||||
machinearch = "m68k";
|
||||
} else
|
||||
yyerror("Unknown machine type");
|
||||
} |
|
||||
@ -474,14 +450,6 @@ Dev_name:
|
||||
Init_dev Dev NUMBER
|
||||
= {
|
||||
cur.d_name = $2;
|
||||
if (eq($2, "mba"))
|
||||
seen_mba = 1;
|
||||
else if (eq($2, "uba"))
|
||||
seen_uba = 1;
|
||||
else if (eq($2, "vba"))
|
||||
seen_vba = 1;
|
||||
else if (eq($2, "isa"))
|
||||
seen_isa = 1;
|
||||
cur.d_unit = $3;
|
||||
};
|
||||
|
||||
@ -871,28 +839,10 @@ check_nexus(dev, num)
|
||||
|
||||
switch (machine) {
|
||||
|
||||
case MACHINE_VAX:
|
||||
if (!eq(dev->d_name, "uba") && !eq(dev->d_name, "mba") &&
|
||||
!eq(dev->d_name, "bi"))
|
||||
yyerror("only uba's, mba's, and bi's should be connected to the nexus");
|
||||
if (num != QUES)
|
||||
yyerror("can't give specific nexus numbers");
|
||||
break;
|
||||
|
||||
case MACHINE_TAHOE:
|
||||
if (!eq(dev->d_name, "vba"))
|
||||
yyerror("only vba's should be connected to the nexus");
|
||||
break;
|
||||
|
||||
case MACHINE_HP300:
|
||||
if (num != QUES)
|
||||
dev->d_addr = num;
|
||||
break;
|
||||
|
||||
case MACHINE_I386:
|
||||
if (!eq(dev->d_name, "isa"))
|
||||
yyerror("only isa's should be connected to the nexus");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
%{
|
||||
/* $NetBSD: lang.l,v 1.12 1995/08/17 17:22:11 thorpej Exp $ */
|
||||
/* $NetBSD: lang.l,v 1.13 1996/06/10 02:32:23 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1980 The Regents of the University of California.
|
||||
@ -53,9 +53,6 @@ struct kt {
|
||||
{ "and", AND },
|
||||
{ "args", ARGS },
|
||||
{ "at", AT },
|
||||
#if MACHINE_I386
|
||||
{ "bio", BIO },
|
||||
#endif MACHINE_I386
|
||||
{ "config", CONFIG },
|
||||
{ "controller", CONTROLLER },
|
||||
{ "cpu", CPU },
|
||||
@ -63,45 +60,22 @@ struct kt {
|
||||
{ "device", DEVICE },
|
||||
{ "disk", DISK },
|
||||
{ "drive", DRIVE },
|
||||
#if MACHINE_I386
|
||||
{ "drq", DRQ },
|
||||
#endif MACHINE_I386
|
||||
{ "dst", DST },
|
||||
{ "dumps", DUMPS },
|
||||
{ "flags", FLAGS },
|
||||
#if MACHINE_I386
|
||||
{ "high", HIGH },
|
||||
#endif MACHINE_I386
|
||||
{ "hz", HZ },
|
||||
{ "ident", IDENT },
|
||||
{ "interleave", INTERLEAVE },
|
||||
#if MACHINE_I386
|
||||
{ "iomem", IOMEM },
|
||||
{ "iosiz", IOSIZ },
|
||||
{ "irq", IRQ },
|
||||
#endif MACHINE_I386
|
||||
{ "machine", MACHIN },
|
||||
{ "major", MAJOR },
|
||||
{ "makeoptions", MAKEOPTIONS },
|
||||
#if MACHINE_AMIGA
|
||||
{ "manufacturer", MANUFACTURER },
|
||||
#endif
|
||||
{ "master", MASTER },
|
||||
{ "maxusers", MAXUSERS },
|
||||
{ "minor", MINOR },
|
||||
#if MACHINE_I386
|
||||
{ "net", NET },
|
||||
#endif MACHINE_I386
|
||||
{ "nexus", NEXUS },
|
||||
{ "on", ON },
|
||||
{ "options", OPTIONS },
|
||||
#if MACHINE_I386
|
||||
{ "port", PORT },
|
||||
#endif MACHINE_I386
|
||||
{ "priority", PRIORITY },
|
||||
#if MACHINE_AMIGA
|
||||
{ "product", PRODUCT },
|
||||
#endif
|
||||
{ "pseudo-device",PSEUDO_DEVICE },
|
||||
{ "root", ROOT },
|
||||
{ "sequential", SEQUENTIAL },
|
||||
@ -112,9 +86,6 @@ struct kt {
|
||||
{ "slave", SLAVE },
|
||||
{ "swap", SWAP },
|
||||
{ "tape", DEVICE },
|
||||
#if MACHINE_I386
|
||||
{ "tty", TTY },
|
||||
#endif MACHINE_I386
|
||||
{ "timezone", TIMEZONE },
|
||||
{ "trace", TRACE },
|
||||
{ "vector", VECTOR },
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: main.c,v 1.13 1995/08/17 17:22:12 thorpej Exp $ */
|
||||
/* $NetBSD: main.c,v 1.14 1996/06/10 02:32:24 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980 Regents of the University of California.
|
||||
@ -41,7 +41,7 @@ char copyright[] =
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)main.c 5.17 (Berkeley) 7/1/91";*/
|
||||
static char rcsid[] = "$NetBSD: main.c,v 1.13 1995/08/17 17:22:12 thorpej Exp $";
|
||||
static char rcsid[] = "$NetBSD: main.c,v 1.14 1996/06/10 02:32:24 thorpej Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -116,41 +116,13 @@ usage: fputs("usage: config.old [-gkp] sysname\n", stderr);
|
||||
exit(3);
|
||||
switch (machine) {
|
||||
|
||||
case MACHINE_VAX:
|
||||
vax_ioconf(); /* Print ioconf.c */
|
||||
ubglue(); /* Create ubglue.s */
|
||||
break;
|
||||
|
||||
case MACHINE_TAHOE:
|
||||
tahoe_ioconf();
|
||||
vbglue();
|
||||
break;
|
||||
|
||||
case MACHINE_HP300:
|
||||
hp300_ioconf();
|
||||
hpglue();
|
||||
break;
|
||||
|
||||
case MACHINE_I386:
|
||||
i386_ioconf(); /* Print ioconf.c */
|
||||
i386_vector(); /* Create vector.s */
|
||||
break;
|
||||
|
||||
case MACHINE_PC532:
|
||||
pc532_ioconf(); /* Print ioconf.c */
|
||||
break;
|
||||
|
||||
case MACHINE_PMAX:
|
||||
pmax_ioconf();
|
||||
break;
|
||||
|
||||
case MACHINE_AMIGA:
|
||||
amiga_ioconf();
|
||||
amigaglue();
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Specify machine type, e.g. ``machine vax''\n");
|
||||
printf("Specify machine type, e.g. ``machine hp300''\n");
|
||||
exit(1);
|
||||
}
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: mkioconf.c,v 1.37 1995/08/17 17:22:17 thorpej Exp $ */
|
||||
/* $NetBSD: mkioconf.c,v 1.38 1996/06/10 02:32:25 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980 Regents of the University of California.
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)mkioconf.c 5.18 (Berkeley) 5/10/91";*/
|
||||
static char rcsid[] = "$NetBSD: mkioconf.c,v 1.37 1995/08/17 17:22:17 thorpej Exp $";
|
||||
static char rcsid[] = "$NetBSD: mkioconf.c,v 1.38 1996/06/10 02:32:25 thorpej Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <stdio.h>
|
||||
@ -90,427 +90,6 @@ pseudo_init(fp)
|
||||
fprintf(fp, "\t{ 0, 0 }\n};\n");
|
||||
}
|
||||
|
||||
#if MACHINE_VAX
|
||||
vax_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
register int uba_n, slave;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "#include \"vax/include/pte.h\"\n");
|
||||
fprintf(fp, "#include \"sys/param.h\"\n");
|
||||
fprintf(fp, "#include \"sys/device.h\"\n");
|
||||
fprintf(fp, "#include \"sys/buf.h\"\n");
|
||||
fprintf(fp, "#include \"sys/map.h\"\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#include \"vax/mba/mbavar.h\"\n");
|
||||
fprintf(fp, "#include \"vax/uba/ubavar.h\"\n\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#define C (caddr_t)\n\n");
|
||||
/*
|
||||
* First print the mba initialization structures
|
||||
*/
|
||||
if (seen_mba) {
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS ||
|
||||
!eq(mp->d_name, "mba"))
|
||||
continue;
|
||||
fprintf(fp, "extern struct mba_driver %sdriver;\n",
|
||||
dp->d_name);
|
||||
}
|
||||
fprintf(fp, "\nstruct mba_device mbdinit[] = {\n");
|
||||
fprintf(fp, "\t/* Device, Unit, Mba, Drive, Dk */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES || mp == 0 ||
|
||||
mp == TO_NEXUS || !eq(mp->d_name, "mba"))
|
||||
continue;
|
||||
if (dp->d_addr) {
|
||||
printf("can't specify csr address on mba for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_vec != 0) {
|
||||
printf("can't specify vector for %s%d on mba\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive == UNKNOWN) {
|
||||
printf("drive not specified for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_slave != UNKNOWN) {
|
||||
printf("can't specify slave number for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
fprintf(fp, "\t{ &%sdriver, %d, %s,",
|
||||
dp->d_name, dp->d_unit, qu(mp->d_unit));
|
||||
fprintf(fp, " %s, %d },\n",
|
||||
qu(dp->d_drive), dp->d_dk);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n\n");
|
||||
/*
|
||||
* Print the mbsinit structure
|
||||
* Driver Controller Unit Slave
|
||||
*/
|
||||
fprintf(fp, "struct mba_slave mbsinit [] = {\n");
|
||||
fprintf(fp, "\t/* Driver, Ctlr, Unit, Slave */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
/*
|
||||
* All slaves are connected to something which
|
||||
* is connected to the massbus.
|
||||
*/
|
||||
if ((mp = dp->d_conn) == 0 || mp == TO_NEXUS)
|
||||
continue;
|
||||
np = mp->d_conn;
|
||||
if (np == 0 || np == TO_NEXUS ||
|
||||
!eq(np->d_name, "mba"))
|
||||
continue;
|
||||
fprintf(fp, "\t{ &%sdriver, %s",
|
||||
mp->d_name, qu(mp->d_unit));
|
||||
fprintf(fp, ", %2d, %s },\n",
|
||||
dp->d_unit, qu(dp->d_slave));
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n\n");
|
||||
}
|
||||
/*
|
||||
* Now generate interrupt vectors for the unibus
|
||||
*/
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
if (dp->d_vec != 0) {
|
||||
struct idlst *ip;
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS ||
|
||||
(!eq(mp->d_name, "uba") && !eq(mp->d_name, "bi")))
|
||||
continue;
|
||||
fprintf(fp,
|
||||
"extern struct uba_driver %sdriver;\n",
|
||||
dp->d_name);
|
||||
fprintf(fp, "extern ");
|
||||
ip = dp->d_vec;
|
||||
for (;;) {
|
||||
fprintf(fp, "X%s%d()", ip->id, dp->d_unit);
|
||||
ip = ip->id_next;
|
||||
if (ip == 0)
|
||||
break;
|
||||
fprintf(fp, ", ");
|
||||
}
|
||||
fprintf(fp, ";\n");
|
||||
fprintf(fp, "int\t (*%sint%d[])() = { ", dp->d_name,
|
||||
dp->d_unit);
|
||||
ip = dp->d_vec;
|
||||
for (;;) {
|
||||
fprintf(fp, "X%s%d", ip->id, dp->d_unit);
|
||||
ip = ip->id_next;
|
||||
if (ip == 0)
|
||||
break;
|
||||
fprintf(fp, ", ");
|
||||
}
|
||||
fprintf(fp, ", 0 } ;\n");
|
||||
}
|
||||
}
|
||||
fprintf(fp, "\nstruct uba_ctlr ubminit[] = {\n");
|
||||
fprintf(fp, "/*\t driver,\tctlr,\tubanum,\talive,\tintr,\taddr */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_type != CONTROLLER || mp == TO_NEXUS || mp == 0 ||
|
||||
!eq(mp->d_name, "uba"))
|
||||
continue;
|
||||
if (dp->d_vec == 0) {
|
||||
printf("must specify vector for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_addr == 0) {
|
||||
printf("must specify csr address for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("drives need their own entries; dont ");
|
||||
printf("specify drive or slave for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_flags) {
|
||||
printf("controllers (e.g. %s%d) ",
|
||||
dp->d_name, dp->d_unit);
|
||||
printf("don't have flags, only devices do\n");
|
||||
continue;
|
||||
}
|
||||
fprintf(fp,
|
||||
"\t{ &%sdriver,\t%d,\t%s,\t0,\t%sint%d, C 0%o },\n",
|
||||
dp->d_name, dp->d_unit, qu(mp->d_unit),
|
||||
dp->d_name, dp->d_unit, dp->d_addr);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
/* unibus devices */
|
||||
fprintf(fp, "\nstruct uba_device ubdinit[] = {\n");
|
||||
fprintf(fp,
|
||||
"\t/* driver, unit, ctlr, ubanum, slave, intr, addr, dk, flags*/\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES || dp->d_type != DEVICE || mp == 0 ||
|
||||
mp == TO_NEXUS || mp->d_type == MASTER ||
|
||||
eq(mp->d_name, "mba"))
|
||||
continue;
|
||||
np = mp->d_conn;
|
||||
if (np != 0 && np != TO_NEXUS && eq(np->d_name, "mba"))
|
||||
continue;
|
||||
np = 0;
|
||||
if (eq(mp->d_name, "uba")) {
|
||||
if (dp->d_vec == 0) {
|
||||
printf("must specify vector for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_addr == 0) {
|
||||
printf("must specify csr for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("drives/slaves can be specified ");
|
||||
printf("only for controllers, ");
|
||||
printf("not for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
uba_n = mp->d_unit;
|
||||
slave = QUES;
|
||||
} else {
|
||||
if ((np = mp->d_conn) == 0) {
|
||||
printf("%s%d isn't connected to anything ",
|
||||
mp->d_name, mp->d_unit);
|
||||
printf(", so %s%d is unattached\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
uba_n = np->d_unit;
|
||||
if (dp->d_drive == UNKNOWN) {
|
||||
printf("must specify ``drive number'' ");
|
||||
printf("for %s%d\n", dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
/* NOTE THAT ON THE UNIBUS ``drive'' IS STORED IN */
|
||||
/* ``SLAVE'' AND WE DON'T WANT A SLAVE SPECIFIED */
|
||||
if (dp->d_slave != UNKNOWN) {
|
||||
printf("slave numbers should be given only ");
|
||||
printf("for massbus tapes, not for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_vec != 0) {
|
||||
printf("interrupt vectors should not be ");
|
||||
printf("given for drive %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_addr != 0) {
|
||||
printf("csr addresses should be given only ");
|
||||
printf("on controllers, not on %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
slave = dp->d_drive;
|
||||
}
|
||||
fprintf(fp, "\t{ &%sdriver, %2d, %s,",
|
||||
eq(mp->d_name, "uba") ? dp->d_name : mp->d_name, dp->d_unit,
|
||||
eq(mp->d_name, "uba") ? " -1" : qu(mp->d_unit));
|
||||
fprintf(fp, " %s, %2d, %s, C 0%-6o, %d, 0x%x },\n",
|
||||
qu(uba_n), slave, intv(dp), dp->d_addr, dp->d_dk,
|
||||
dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_TAHOE
|
||||
tahoe_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
register int vba_n, slave;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "#include \"sys/param.h\"\n");
|
||||
fprintf(fp, "#include \"tahoe/include/pte.h\"\n");
|
||||
fprintf(fp, "#include \"sys/device.h\"\n");
|
||||
fprintf(fp, "#include \"sys/buf.h\"\n");
|
||||
fprintf(fp, "#include \"sys/map.h\"\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#include \"tahoe/vba/vbavar.h\"\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#define C (caddr_t)\n\n");
|
||||
/*
|
||||
* Now generate interrupt vectors for the versabus
|
||||
*/
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS || !eq(mp->d_name, "vba"))
|
||||
continue;
|
||||
if (dp->d_vec != 0) {
|
||||
struct idlst *ip;
|
||||
fprintf(fp,
|
||||
"extern struct vba_driver %sdriver;\n",
|
||||
dp->d_name);
|
||||
fprintf(fp, "extern ");
|
||||
ip = dp->d_vec;
|
||||
for (;;) {
|
||||
fprintf(fp, "X%s%d()", ip->id, dp->d_unit);
|
||||
ip = ip->id_next;
|
||||
if (ip == 0)
|
||||
break;
|
||||
fprintf(fp, ", ");
|
||||
}
|
||||
fprintf(fp, ";\n");
|
||||
fprintf(fp, "int\t (*%sint%d[])() = { ", dp->d_name,
|
||||
dp->d_unit);
|
||||
ip = dp->d_vec;
|
||||
for (;;) {
|
||||
fprintf(fp, "X%s%d", ip->id, dp->d_unit);
|
||||
ip = ip->id_next;
|
||||
if (ip == 0)
|
||||
break;
|
||||
fprintf(fp, ", ");
|
||||
}
|
||||
fprintf(fp, ", 0 } ;\n");
|
||||
} else if (dp->d_type == DRIVER) /* devices w/o interrupts */
|
||||
fprintf(fp,
|
||||
"extern struct vba_driver %sdriver;\n",
|
||||
dp->d_name);
|
||||
}
|
||||
fprintf(fp, "\nstruct vba_ctlr vbminit[] = {\n");
|
||||
fprintf(fp, "/*\t driver,\tctlr,\tvbanum,\talive,\tintr,\taddr */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_type != CONTROLLER || mp == TO_NEXUS || mp == 0 ||
|
||||
!eq(mp->d_name, "vba"))
|
||||
continue;
|
||||
if (dp->d_vec == 0) {
|
||||
printf("must specify vector for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_addr == 0) {
|
||||
printf("must specify csr address for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("drives need their own entries; dont ");
|
||||
printf("specify drive or slave for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_flags) {
|
||||
printf("controllers (e.g. %s%d) ",
|
||||
dp->d_name, dp->d_unit);
|
||||
printf("don't have flags, only devices do\n");
|
||||
continue;
|
||||
}
|
||||
fprintf(fp,
|
||||
"\t{ &%sdriver,\t%d,\t%s,\t0,\t%sint%d, C 0x%x },\n",
|
||||
dp->d_name, dp->d_unit, qu(mp->d_unit),
|
||||
dp->d_name, dp->d_unit, dp->d_addr);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
/* versabus devices */
|
||||
fprintf(fp, "\nstruct vba_device vbdinit[] = {\n");
|
||||
fprintf(fp,
|
||||
"\t/* driver, unit, ctlr, vbanum, slave, intr, addr, dk, flags*/\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES || dp->d_type != DEVICE || mp == 0 ||
|
||||
mp == TO_NEXUS || mp->d_type == MASTER ||
|
||||
eq(mp->d_name, "mba"))
|
||||
continue;
|
||||
np = mp->d_conn;
|
||||
if (np != 0 && np != TO_NEXUS && eq(np->d_name, "mba"))
|
||||
continue;
|
||||
np = 0;
|
||||
if (eq(mp->d_name, "vba")) {
|
||||
if (dp->d_vec == 0)
|
||||
printf(
|
||||
"Warning, no interrupt vector specified for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
if (dp->d_addr == 0) {
|
||||
printf("must specify csr for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("drives/slaves can be specified ");
|
||||
printf("only for controllers, ");
|
||||
printf("not for device %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
vba_n = mp->d_unit;
|
||||
slave = QUES;
|
||||
} else {
|
||||
if ((np = mp->d_conn) == 0) {
|
||||
printf("%s%d isn't connected to anything ",
|
||||
mp->d_name, mp->d_unit);
|
||||
printf(", so %s%d is unattached\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
vba_n = np->d_unit;
|
||||
if (dp->d_drive == UNKNOWN) {
|
||||
printf("must specify ``drive number'' ");
|
||||
printf("for %s%d\n", dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
/* NOTE THAT ON THE UNIBUS ``drive'' IS STORED IN */
|
||||
/* ``SLAVE'' AND WE DON'T WANT A SLAVE SPECIFIED */
|
||||
if (dp->d_slave != UNKNOWN) {
|
||||
printf("slave numbers should be given only ");
|
||||
printf("for massbus tapes, not for %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_vec != 0) {
|
||||
printf("interrupt vectors should not be ");
|
||||
printf("given for drive %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
if (dp->d_addr != 0) {
|
||||
printf("csr addresses should be given only ");
|
||||
printf("on controllers, not on %s%d\n",
|
||||
dp->d_name, dp->d_unit);
|
||||
continue;
|
||||
}
|
||||
slave = dp->d_drive;
|
||||
}
|
||||
fprintf(fp, "\t{ &%sdriver, %2d, %s,",
|
||||
eq(mp->d_name, "vba") ? dp->d_name : mp->d_name, dp->d_unit,
|
||||
eq(mp->d_name, "vba") ? " -1" : qu(mp->d_unit));
|
||||
fprintf(fp, " %s, %2d, %s, C 0x%-6x, %d, 0x%x },\n",
|
||||
qu(vba_n), slave, intv(dp), dp->d_addr, dp->d_dk,
|
||||
dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_HP300
|
||||
hp300_ioconf()
|
||||
{
|
||||
@ -618,7 +197,7 @@ hp300_ioconf()
|
||||
}
|
||||
|
||||
#define ishpibdev(n) (eq(n,"rd") || eq(n,"ct") || eq(n,"mt") || eq(n,"ppi"))
|
||||
#define isscsidev(n) (eq(n,"sd") || eq(n,"st"))
|
||||
#define isscsidev(n) (eq(n,"sd") || eq(n,"st") || eq(n,"ac"))
|
||||
|
||||
hpbadslave(mp, dp)
|
||||
register struct device *dp, *mp;
|
||||
@ -652,433 +231,3 @@ char *
|
||||
return (errbuf);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_I386
|
||||
char *shandler();
|
||||
char *sirq();
|
||||
|
||||
i386_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
register int seq = 0;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * ioconf.c \n");
|
||||
fprintf(fp, " * Generated by config.old program\n");
|
||||
fprintf(fp, " */\n\n");
|
||||
fprintf(fp, "#include <sys/param.h>\n");
|
||||
fprintf(fp, "#include <sys/device.h>\n");
|
||||
fprintf(fp, "#include <sys/buf.h>\n");
|
||||
fprintf(fp, "#include <machine/pte.h>\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#define C (caddr_t)\n");
|
||||
fprintf(fp, "#define D &isa_devtab\n");
|
||||
fprintf(fp, "\n");
|
||||
/*
|
||||
* First print the isa initialization structures
|
||||
*/
|
||||
if (seen_isa) {
|
||||
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * ISA devices\n");
|
||||
fprintf(fp, " */\n\n");
|
||||
fprintf(fp, "#include <i386/isa/isa_device.h>\n");
|
||||
fprintf(fp, "#include <i386/isa/isa.h>\n");
|
||||
fprintf(fp, "#include <i386/isa/icu.h>\n\n");
|
||||
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS)
|
||||
continue;
|
||||
fprintf(fp, "extern struct cfdriver %7scd;\n",
|
||||
dp->d_name);
|
||||
if (dp->d_irq == 2) {
|
||||
fprintf(stderr, "remapped irq 2 to irq 9, please update your config file\n");
|
||||
dp->d_irq = 9;
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(fp, "\nstruct isa_device isa_devtab[] = {\n");
|
||||
fprintf(fp, "\
|
||||
/* driver iobase irq drq maddr msiz unit flags phys parent */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS)
|
||||
continue;
|
||||
dp->d_seq = seq++;
|
||||
}
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || mp == TO_NEXUS)
|
||||
continue;
|
||||
fprintf(fp, "{ &%7scd,", dp->d_name);
|
||||
if (dp->d_port)
|
||||
fprintf(fp, " %8s,", dp->d_port);
|
||||
else
|
||||
fprintf(fp, " 0x%04x,", dp->d_portn);
|
||||
fprintf(fp, " %5s, %2d, C 0x%05x, %5d, %2d, 0x%04x, %3d",
|
||||
sirq(dp->d_irq), dp->d_drq, dp->d_maddr, dp->d_msize,
|
||||
dp->d_unit, dp->d_flags,
|
||||
eq(mp->d_name, "isa") ? 0 :
|
||||
dp->d_drive == UNKNOWN ? dp->d_slave : dp->d_drive);
|
||||
if (eq(mp->d_name, "isa"))
|
||||
fprintf(fp, ", NULL");
|
||||
else
|
||||
fprintf(fp, ", D[%2d]", mp->d_seq);
|
||||
fprintf(fp, " },\n");
|
||||
}
|
||||
fprintf(fp, "0\n};\n");
|
||||
}
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX - there should be a general function to print devtabs instead of these
|
||||
* little pieces of it.
|
||||
*/
|
||||
|
||||
char *
|
||||
sirq(int i)
|
||||
{
|
||||
static char buf[20];
|
||||
|
||||
#if 0
|
||||
sprintf(buf, "%d", i);
|
||||
return buf;
|
||||
#else
|
||||
switch(i) {
|
||||
case -2:
|
||||
return "0";
|
||||
case -1:
|
||||
return "-1";
|
||||
default:
|
||||
sprintf(buf, "IRQ%d", i);
|
||||
return buf;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
char *
|
||||
shandler(dp)
|
||||
struct device *dp;
|
||||
{
|
||||
static char buf[32+20];
|
||||
|
||||
if(dp->d_irq==-2)
|
||||
return ("NULL");
|
||||
sprintf(buf, "X%.32s%d", dp->d_name, dp->d_unit);
|
||||
return buf;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_PC532
|
||||
pc532_ioconf()
|
||||
{
|
||||
struct device *dp, *mp, *np;
|
||||
int uba_n, slave;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * ioconf.c \n");
|
||||
fprintf(fp, " * Generated by config.old program\n");
|
||||
fprintf(fp, " */\n\n");
|
||||
fprintf(fp, "#include \"../../dev/device.h\"\n");
|
||||
fprintf(fp, "#include <types.h>\n");
|
||||
fprintf(fp, "#include <cdefs.h>\n");
|
||||
fprintf(fp, "#include <device.h>\n");
|
||||
fprintf(fp, "\n");
|
||||
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES || mp == 0)
|
||||
continue;
|
||||
fprintf(fp, "extern struct pc532_driver %sdriver;\n", mp->d_name);
|
||||
}
|
||||
|
||||
fprintf(fp, "\nstruct pc532_device pc532_devtab_bio[] = {\n");
|
||||
fprintf(fp, "/* driver name unit drive flags alive */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || !eq(dp->d_mask, "bio"))
|
||||
continue;
|
||||
fprintf (fp, "{&%sdriver,\t\"%s\",\t%d,\t%d,\t%d,\t0},\n",
|
||||
mp->d_name, dp->d_name, dp->d_unit, dp->d_drive, dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "0\n};\n");
|
||||
|
||||
fprintf(fp, "\nstruct pc532_device pc532_devtab_tty[] = {\n");
|
||||
fprintf(fp, "/* driver name unit scsiid flags alive */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || !eq(dp->d_mask, "tty"))
|
||||
continue;
|
||||
fprintf (fp, "{&%sdriver,\t\"%s\",\t%d,\t0,\t0,\t0},\n",
|
||||
mp->d_name, dp->d_name, dp->d_unit);
|
||||
}
|
||||
fprintf(fp, "0\n};\n");
|
||||
|
||||
fprintf(fp, "\nstruct pc532_device pc532_devtab_net[] = {\n");
|
||||
fprintf(fp, "/* driver unit scsiid alive */\n");
|
||||
fprintf(fp, "0\n};\n");
|
||||
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_PMAX
|
||||
pmax_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp;
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "/*\n");
|
||||
fprintf(fp, " * ioconf.c \n");
|
||||
fprintf(fp, " * Generated by config.old program\n");
|
||||
fprintf(fp, " */\n\n");
|
||||
fprintf(fp, "#include \"sys/param.h\"\n");
|
||||
fprintf(fp, "#include \"sys/types.h\"\n");
|
||||
fprintf(fp, "#include \"sys/device.h\"\n");
|
||||
fprintf(fp, "#include \"sys/buf.h\"\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#include \"pmax/dev/device.h\"\n\n");
|
||||
fprintf(fp, "#define C (char *)\n\n");
|
||||
|
||||
/* print controller initialization structures */
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
if (dp->d_type == PSEUDO_DEVICE)
|
||||
continue;
|
||||
fprintf(fp, "extern struct driver %sdriver;\n", dp->d_name);
|
||||
}
|
||||
fprintf(fp, "\nstruct pmax_ctlr pmax_cinit[] = {\n");
|
||||
fprintf(fp, "/*\tdriver,\t\tunit,\taddr,\t\tflags */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
if (dp->d_type != CONTROLLER && dp->d_type != MASTER)
|
||||
continue;
|
||||
if (dp->d_conn != TO_NEXUS) {
|
||||
printf("%s%s must be attached to a nexus (internal bus)\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("can't specify drive/slave for %s%s\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
if (dp->d_unit == UNKNOWN || dp->d_unit == QUES)
|
||||
dp->d_unit = 0;
|
||||
fprintf(fp,
|
||||
"\t{ &%sdriver,\t%d,\tC 0x%x,\t0x%x },\n",
|
||||
dp->d_name, dp->d_unit, dp->d_addr, dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
|
||||
/* print devices connected to other controllers */
|
||||
fprintf(fp, "\nstruct scsi_device scsi_dinit[] = {\n");
|
||||
fprintf(fp,
|
||||
"/*driver,\tcdriver,\tunit,\tctlr,\tdrive,\tslave,\tdk,\tflags*/\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
if (dp->d_type == CONTROLLER || dp->d_type == MASTER ||
|
||||
dp->d_type == PSEUDO_DEVICE)
|
||||
continue;
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 ||
|
||||
(!eq(mp->d_name, "asc") && !eq(mp->d_name, "sii"))) {
|
||||
printf("%s%s: devices must be attached to a SCSI controller\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
if ((unsigned)dp->d_drive > 6) {
|
||||
printf("%s%s: SCSI drive must be in the range 0..6\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
/* may want to allow QUES later */
|
||||
if ((unsigned)dp->d_slave > 7) {
|
||||
printf("%s%s: SCSI slave (LUN) must be in the range 0..7\n",
|
||||
dp->d_name, wnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
fprintf(fp, "{ &%sdriver,\t&%sdriver,", dp->d_name, mp->d_name);
|
||||
fprintf(fp, "\t%d,\t%d,\t%d,\t%d,\t%d,\t0x%x },\n",
|
||||
dp->d_unit, mp->d_unit, dp->d_drive, dp->d_slave,
|
||||
dp->d_dk, dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "0\n};\n");
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if MACHINE_AMIGA
|
||||
amiga_ioconf()
|
||||
{
|
||||
register struct device *dp, *mp, *np;
|
||||
register int controller, slave;
|
||||
FILE *fp;
|
||||
extern char *awnum();
|
||||
|
||||
fp = fopen(path("ioconf.c"), "w");
|
||||
if (fp == 0) {
|
||||
perror(path("ioconf.c"));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(fp, "#include \"sys/param.h\"\n");
|
||||
fprintf(fp, "#include \"sys/buf.h\"\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#include \"arch/amiga/dev/device.h\"\n\n");
|
||||
fprintf(fp, "\n");
|
||||
fprintf(fp, "#define C (caddr_t)\n");
|
||||
fprintf(fp, "#define D (struct driver *)\n\n");
|
||||
/*
|
||||
* First print the controller initialization structures
|
||||
*/
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES || mp == 0)
|
||||
continue;
|
||||
fprintf(fp, "extern struct driver %sdriver;\n", dp->d_name);
|
||||
}
|
||||
fprintf(fp, "\nstruct amiga_ctlr amiga_cinit[] = {\n");
|
||||
fprintf(fp, "/*\tdriver,\t\tunit,\talive,\taddr,\tflags */\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (dp->d_unit == QUES ||
|
||||
dp->d_type != MASTER && dp->d_type != CONTROLLER)
|
||||
continue;
|
||||
if (mp != TO_NEXUS) {
|
||||
printf("%s%s must be attached to an controller\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("can't specify drive/slave for %s%s\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
fprintf(fp,
|
||||
"\t{ &%sdriver,\t%d,\t0,\tC 0x%x,\t0x%x },\n",
|
||||
dp->d_name, dp->d_unit, dp->d_addr, dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "\t0\n};\n");
|
||||
/* devices */
|
||||
fprintf(fp, "\nstruct amiga_device amiga_dinit[] = {\n");
|
||||
fprintf(fp,
|
||||
"/*driver,\tcdriver,\tunit,\tctlr,\tslave,\taddr,\tdk,\tflags*/\n");
|
||||
for (dp = dtab; dp != 0; dp = dp->d_next) {
|
||||
mp = dp->d_conn;
|
||||
if (mp == 0 || dp->d_type != DEVICE || amigabadslave(mp, dp))
|
||||
continue;
|
||||
if (mp == TO_NEXUS) {
|
||||
if (dp->d_drive != UNKNOWN || dp->d_slave != UNKNOWN) {
|
||||
printf("can't specify drive/slave for %s%s\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
slave = QUES;
|
||||
controller = QUES;
|
||||
} else {
|
||||
if (dp->d_addr != 0) {
|
||||
printf("can't specify manufacturer/product for device %s%s\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
if (mp->d_type == CONTROLLER) {
|
||||
if (dp->d_drive == UNKNOWN) {
|
||||
printf("must specify drive for %s%s\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
slave = dp->d_drive;
|
||||
} else {
|
||||
if (dp->d_slave == UNKNOWN) {
|
||||
printf("must specify slave for %s%s\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
continue;
|
||||
}
|
||||
slave = dp->d_slave;
|
||||
}
|
||||
controller = mp->d_unit;
|
||||
}
|
||||
fprintf(fp, "{ &%sdriver,\t", dp->d_name);
|
||||
if (mp == TO_NEXUS)
|
||||
fprintf(fp, "D 0x0,\t");
|
||||
else
|
||||
fprintf(fp, "&%sdriver,", mp->d_name);
|
||||
fprintf(fp, "\t%d,\t%d,\t%d,\tC 0x%x,\t%d,\t0x%x },\n",
|
||||
dp->d_unit, controller, slave,
|
||||
dp->d_addr, dp->d_dk, dp->d_flags);
|
||||
}
|
||||
fprintf(fp, "0\n};\n");
|
||||
pseudo_init(fp);
|
||||
(void) fclose(fp);
|
||||
}
|
||||
|
||||
#define isscsidev(n) (eq(n,"sd") || eq(n,"st"))
|
||||
|
||||
amigabadslave(mp, dp)
|
||||
register struct device *dp, *mp;
|
||||
{
|
||||
extern char *awnum();
|
||||
|
||||
if (mp == TO_NEXUS && isscsidev(dp->d_name) ||
|
||||
mp != TO_NEXUS && eq(mp->d_name, "scsi") &&
|
||||
!isscsidev(dp->d_name)) {
|
||||
printf("%s%s must be attached to a scsi\n",
|
||||
dp->d_name, awnum(dp->d_unit));
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
char *
|
||||
awnum(num)
|
||||
{
|
||||
|
||||
if (num == QUES || num == UNKNOWN)
|
||||
return ("?");
|
||||
(void) sprintf(errbuf, "%d", num);
|
||||
return (errbuf);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
char *
|
||||
intv(dev)
|
||||
register struct device *dev;
|
||||
{
|
||||
static char buf[20];
|
||||
|
||||
if (dev->d_vec == 0)
|
||||
return (" 0");
|
||||
(void) sprintf(buf, "%sint%d", dev->d_name, dev->d_unit);
|
||||
return (buf);
|
||||
}
|
||||
|
||||
char *
|
||||
qu(num)
|
||||
{
|
||||
if (num == QUES)
|
||||
return ("'?'");
|
||||
if (num == UNKNOWN)
|
||||
return (" -1");
|
||||
(void) sprintf(errbuf, "%3d", num);
|
||||
return (errbuf);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: mkmakefile.c,v 1.28 1995/08/17 17:22:18 thorpej Exp $ */
|
||||
/* $NetBSD: mkmakefile.c,v 1.29 1996/06/10 02:32:26 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1980,1990 Regents of the University of California.
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
#ifndef lint
|
||||
/*static char sccsid[] = "from: @(#)mkmakefile.c 5.33 (Berkeley) 7/1/91";*/
|
||||
static char rcsid[] = "$NetBSD: mkmakefile.c,v 1.28 1995/08/17 17:22:18 thorpej Exp $";
|
||||
static char rcsid[] = "$NetBSD: mkmakefile.c,v 1.29 1996/06/10 02:32:26 thorpej Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -123,13 +123,7 @@ static struct users {
|
||||
int u_min;
|
||||
int u_max;
|
||||
} users[] = {
|
||||
{ 24, 8, 1024 }, /* MACHINE_VAX */
|
||||
{ 4, 2, 128 }, /* MACHINE_TAHOE */
|
||||
{ 8, 2, 64 }, /* MACHINE_HP300 */
|
||||
{ 8, 2, 64 }, /* MACHINE_I386 */
|
||||
{ 8, 2, 64 }, /* MACHINE_PC532 */
|
||||
{ 8, 2, 64 }, /* MACHINE_PMAX */
|
||||
{ 8, 2, 64 }, /* MACHINE_AMIGA */
|
||||
};
|
||||
#define NUSERS (sizeof (users) / sizeof (users[0]))
|
||||
|
||||
@ -178,7 +172,7 @@ makefile()
|
||||
printf("timezone not specified; gmt assumed\n");
|
||||
if ((unsigned)machine > NUSERS) {
|
||||
printf("maxusers config info isn't present, using vax\n");
|
||||
up = &users[MACHINE_VAX-1];
|
||||
up = &users[MACHINE_HP300-1];
|
||||
} else
|
||||
up = &users[machine-1];
|
||||
if (maxusers == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user