From ff8175118896088b7f1624aba5b7d021db33e6e4 Mon Sep 17 00:00:00 2001 From: Serge Vakulenko Date: Mon, 1 Jun 2015 17:58:14 -0700 Subject: [PATCH] Kconfig reindented to 4 spaces. --- tools/kconfig/config.h | 226 ++-- tools/kconfig/config.y | 1698 +++++++++++++++--------------- tools/kconfig/lang.l | 254 ++--- tools/kconfig/main.c | 331 +++--- tools/kconfig/mkglue.c | 536 +++++----- tools/kconfig/mkheaders.c | 258 ++--- tools/kconfig/mkioconf.c | 2002 ++++++++++++++++++------------------ tools/kconfig/mkmakefile.c | 920 ++++++++--------- tools/kconfig/mkswapconf.c | 282 ++--- tools/kconfig/mkubglue.c | 242 ++--- 10 files changed, 3413 insertions(+), 3336 deletions(-) diff --git a/tools/kconfig/config.h b/tools/kconfig/config.h index f801e3d..9bf8ea2 100644 --- a/tools/kconfig/config.h +++ b/tools/kconfig/config.h @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)config.h 8.1 (Berkeley) 6/6/93 + * @(#)config.h 8.1 (Berkeley) 6/6/93 */ /* @@ -40,95 +40,95 @@ #include #include -#define NODEV ((dev_t)-1) +#define NODEV ((dev_t)-1) struct file_list { - struct file_list *f_next; - char *f_fn; /* the name */ - u_char f_type; /* see below */ - u_char f_flags; /* see below */ - char *f_special; /* special make rule if present */ - char *f_needs; - /* - * Random values: - * swap space parameters for swap areas - * root device, etc. for system specifications - */ - union { - struct { /* when swap specification */ - dev_t fuw_swapdev; - int fuw_swapsize; - int fuw_swapflag; - } fuw; - struct { /* when system specification */ - dev_t fus_rootdev; - dev_t fus_dumpdev; - } fus; - struct { /* when component dev specification */ - dev_t fup_compdev; - int fup_compinfo; - } fup; - } fun; -#define f_swapdev fun.fuw.fuw_swapdev -#define f_swapsize fun.fuw.fuw_swapsize -#define f_swapflag fun.fuw.fuw_swapflag -#define f_rootdev fun.fus.fus_rootdev -#define f_dumpdev fun.fus.fus_dumpdev -#define f_compdev fun.fup.fup_compdev -#define f_compinfo fun.fup.fup_compinfo + struct file_list *f_next; + char *f_fn; /* the name */ + u_char f_type; /* see below */ + u_char f_flags; /* see below */ + char *f_special; /* special make rule if present */ + char *f_needs; + /* + * Random values: + * swap space parameters for swap areas + * root device, etc. for system specifications + */ + union { + struct { /* when swap specification */ + dev_t fuw_swapdev; + int fuw_swapsize; + int fuw_swapflag; + } fuw; + struct { /* when system specification */ + dev_t fus_rootdev; + dev_t fus_dumpdev; + } fus; + struct { /* when component dev specification */ + dev_t fup_compdev; + int fup_compinfo; + } fup; + } fun; +#define f_swapdev fun.fuw.fuw_swapdev +#define f_swapsize fun.fuw.fuw_swapsize +#define f_swapflag fun.fuw.fuw_swapflag +#define f_rootdev fun.fus.fus_rootdev +#define f_dumpdev fun.fus.fus_dumpdev +#define f_compdev fun.fup.fup_compdev +#define f_compinfo fun.fup.fup_compinfo }; /* * Types. */ -#define DRIVER 1 -#define NORMAL 2 -#define INVISIBLE 3 -#define PROFILING 4 -#define SYSTEMSPEC 5 -#define SWAPSPEC 6 -#define COMPDEVICE 7 -#define COMPSPEC 8 +#define DRIVER 1 +#define NORMAL 2 +#define INVISIBLE 3 +#define PROFILING 4 +#define SYSTEMSPEC 5 +#define SWAPSPEC 6 +#define COMPDEVICE 7 +#define COMPSPEC 8 /* * Attributes (flags). */ -#define CONFIGDEP 1 +#define CONFIGDEP 1 -struct idlst { - char *id; - struct idlst *id_next; +struct idlst { + char *id; + struct idlst *id_next; }; struct device { - int d_type; /* CONTROLLER, DEVICE, bus adaptor */ - struct device *d_conn; /* what it is connected to */ - char *d_name; /* name of device (e.g. rk11) */ - struct idlst *d_vec; /* interrupt vectors */ - int d_pri; /* interrupt priority */ - int d_addr; /* address of csr */ - int d_unit; /* unit number */ - int d_drive; /* drive number */ - int d_slave; /* slave number */ -#define QUES -1 /* -1 means '?' */ -#define UNKNOWN -2 /* -2 means not set yet */ - int d_dk; /* if init 1 set to number for iostat */ - int d_flags; /* flags for device init */ - char *d_port; /* io port base manifest constant */ - int d_portn; /* io port base (if number not manifest) */ - char *d_mask; /* interrupt mask */ - int d_maddr; /* io memory base */ - int d_msize; /* io memory size */ - int d_drq; /* DMA request */ - int d_irq; /* interrupt request */ - struct device *d_next; /* Next one in list */ + int d_type; /* CONTROLLER, DEVICE, bus adaptor */ + struct device *d_conn; /* what it is connected to */ + char *d_name; /* name of device (e.g. rk11) */ + struct idlst *d_vec; /* interrupt vectors */ + int d_pri; /* interrupt priority */ + int d_addr; /* address of csr */ + int d_unit; /* unit number */ + int d_drive; /* drive number */ + int d_slave; /* slave number */ +#define QUES -1 /* -1 means '?' */ +#define UNKNOWN -2 /* -2 means not set yet */ + int d_dk; /* if init 1 set to number for iostat */ + int d_flags; /* flags for device init */ + char *d_port; /* io port base manifest constant */ + int d_portn; /* io port base (if number not manifest) */ + char *d_mask; /* interrupt mask */ + int d_maddr; /* io memory base */ + int d_msize; /* io memory size */ + int d_drq; /* DMA request */ + int d_irq; /* interrupt request */ + struct device *d_next; /* Next one in list */ }; -#define TO_NEXUS (struct device *)-1 -#define TO_VBA (struct device *)-2 +#define TO_NEXUS (struct device *)-1 +#define TO_VBA (struct device *)-2 struct config { - char *c_dev; - char *s_sysname; + char *c_dev; + char *s_sysname; }; /* @@ -138,12 +138,12 @@ struct config { * it will build from ``Makefile.vax'' and use ``../vax/inline'' * in the makerules, etc. */ -int machine; -char *machinename; -#define MACHINE_VAX 1 -#define MACHINE_TAHOE 2 +int machine; +char *machinename; +#define MACHINE_VAX 1 +#define MACHINE_TAHOE 2 #define MACHINE_HP300 3 -#define MACHINE_I386 4 +#define MACHINE_I386 4 #define MACHINE_MIPS 5 #define MACHINE_PMAX 6 #define MACHINE_LUNA68K 7 @@ -155,8 +155,8 @@ char *machinename; * These and the options (below) are put in the C flags in the makefile. */ struct cputype { - char *cpu_name; - struct cputype *cpu_next; + char *cpu_name; + struct cputype *cpu_next; } *cputype; /* @@ -165,53 +165,53 @@ struct cputype { * A separate set of options may be defined for make-style options. */ struct opt { - char *op_name; - char *op_value; - struct opt *op_next; + char *op_name; + char *op_value; + struct opt *op_next; } *opt, *mkopt; -char *ident; -char *ldscript; -char *ns(); -char *tc(); -char *qu(); -char *get_word(); -char *get_quoted_word(); -char *path(); -char *raise(); +char *ident; +char *ldscript; +char *ns(); +char *tc(); +char *qu(); +char *get_word(); +char *get_quoted_word(); +char *path(); +char *raise(); -int do_trace; +int do_trace; #if MACHINE_VAX -int seen_mba, seen_uba; +int seen_mba, seen_uba; #endif #if MACHINE_TAHOE -int seen_vba; +int seen_vba; #endif #if MACHINE_I386 -int seen_isa; +int seen_isa; #endif -int seen_cd; +int seen_cd; -struct device *connect(); -struct device *dtab; -dev_t nametodev(); -char *devtoname(); +struct device *connect(); +struct device *dtab; +dev_t nametodev(); +char *devtoname(); -char errbuf[80]; -int yyline; +char errbuf[80]; +int yyline; -struct file_list *ftab, *conf_list, **confp, *comp_list, **compp; +struct file_list *ftab, *conf_list, **confp, *comp_list, **compp; -int zone, hadtz; -int dst; -int hz; -int profiling; -int debugging; +int zone, hadtz; +int dst; +int hz; +int profiling; +int debugging; -int maxusers; +int maxusers; -#define eq(a,b) (!strcmp(a,b)) +#define eq(a,b) (!strcmp(a,b)) void init_dev(register struct device *dp); int yyparse(void); diff --git a/tools/kconfig/config.y b/tools/kconfig/config.y index 9093296..8382695 100644 --- a/tools/kconfig/config.y +++ b/tools/kconfig/config.y @@ -1,83 +1,83 @@ %union { - char *str; - int val; - struct file_list *file; - struct idlst *lst; + char *str; + int val; + struct file_list *file; + struct idlst *lst; } -%token AND -%token ANY -%token ARGS -%token AT -%token BIO -%token COMMA -%token CONFIG -%token CONTROLLER -%token CPU -%token CSR -%token DEVICE -%token DISK -%token DRIVE -%token DRQ -%token DST -%token DUMPS -%token EQUALS -%token FLAGS -%token HZ -%token IDENT -%token INTERLEAVE -%token IOMEM -%token IOSIZ -%token IRQ -%token LDSCRIPT -%token MACHINE -%token MAJOR -%token MASTER -%token MAXUSERS -%token MINOR -%token MINUS -%token NET -%token NEXUS -%token ON -%token OPTIONS -%token MAKEOPTIONS -%token PORT -%token PRIORITY -%token PSEUDO_DEVICE -%token ROOT -%token SEMICOLON -%token SEQUENTIAL -%token SIZE -%token SLAVE -%token SWAP -%token TIMEZONE -%token TTY -%token TRACE -%token VECTOR +%token AND +%token ANY +%token ARGS +%token AT +%token BIO +%token COMMA +%token CONFIG +%token CONTROLLER +%token CPU +%token CSR +%token DEVICE +%token DISK +%token DRIVE +%token DRQ +%token DST +%token DUMPS +%token EQUALS +%token FLAGS +%token HZ +%token IDENT +%token INTERLEAVE +%token IOMEM +%token IOSIZ +%token IRQ +%token LDSCRIPT +%token MACHINE +%token MAJOR +%token MASTER +%token MAXUSERS +%token MINOR +%token MINUS +%token NET +%token NEXUS +%token ON +%token OPTIONS +%token MAKEOPTIONS +%token PORT +%token PRIORITY +%token PSEUDO_DEVICE +%token ROOT +%token SEMICOLON +%token SEQUENTIAL +%token SIZE +%token SLAVE +%token SWAP +%token TIMEZONE +%token TTY +%token TRACE +%token VECTOR -%token ID -%token NUMBER -%token FPNUMBER +%token ID +%token NUMBER +%token FPNUMBER -%type Save_id -%type Opt_value -%type Dev -%type Id_list -%type optional_size -%type optional_sflag -%type device_name -%type major_minor -%type arg_device_spec -%type root_device_spec -%type dump_device_spec -%type swap_device_spec -%type comp_device_spec +%type Save_id +%type Opt_value +%type Dev +%type Id_list +%type optional_size +%type optional_sflag +%type device_name +%type major_minor +%type arg_device_spec +%type root_device_spec +%type dump_device_spec +%type swap_device_spec +%type comp_device_spec %{ /* * Copyright (c) 1988, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -89,8 +89,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -107,17 +107,17 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)config.y 8.1 (Berkeley) 6/6/93 + * @(#)config.y 8.1 (Berkeley) 6/6/93 */ #include "config.h" #include #include -struct device cur; -struct device *curp = 0; -char *temp_id; -char *val_id; +struct device cur; +struct device *curp = 0; +char *temp_id; +char *val_id; int yylex(void); int finddev(dev_t dev); @@ -127,510 +127,577 @@ int alreadychecked(dev_t dev, dev_t list[], dev_t *last); %} %% Configuration: - Many_specs - = { verifysystemspecs(); } - ; + Many_specs + = { verifysystemspecs(); } + ; Many_specs: - Many_specs Spec - | - /* lambda */ - ; + Many_specs Spec + | + /* lambda */ + ; Spec: - Device_spec SEMICOLON - = { newdev(&cur); } | - Config_spec SEMICOLON - | - TRACE SEMICOLON - = { do_trace = !do_trace; } | - SEMICOLON - | - error SEMICOLON - ; + Device_spec SEMICOLON + = { newdev(&cur); } + | + Config_spec SEMICOLON + | + TRACE SEMICOLON + = { do_trace = !do_trace; } + | + SEMICOLON + | + error SEMICOLON + ; Config_spec: - MACHINE Save_id - = { - if (!strcmp($2, "vax")) { - machine = MACHINE_VAX; - machinename = "vax"; - } else if (!strcmp($2, "tahoe")) { - machine = MACHINE_TAHOE; - machinename = "tahoe"; - } else if (!strcmp($2, "hp300")) { - machine = MACHINE_HP300; - machinename = "hp300"; - } else if (!strcmp($2, "i386")) { - machine = MACHINE_I386; - machinename = "i386"; - } else if (!strcmp($2, "mips")) { - machine = MACHINE_MIPS; - machinename = "mips"; - } else if (!strcmp($2, "pmax")) { - machine = MACHINE_PMAX; - machinename = "pmax"; - } else if (!strcmp($2, "pic32")) { - machine = MACHINE_PIC32; - machinename = "pic32"; - } else if (!strcmp($2, "luna68k")) { - machine = MACHINE_LUNA68K; - machinename = "luna68k"; - } else if (!strcmp($2, "news3400")) { - machine = MACHINE_NEWS3400; - machinename = "news3400"; - } else - yyerror("Unknown machine type"); - } | - CPU Save_id - = { - struct cputype *cp = - (struct cputype *)malloc(sizeof (struct cputype)); - cp->cpu_name = ns($2); - cp->cpu_next = cputype; - cputype = cp; - free(temp_id); - } | - OPTIONS Opt_list - | - MAKEOPTIONS Mkopt_list - | - IDENT ID - = { ident = ns($2); } | - LDSCRIPT ID - = { ldscript = ns($2); } | - System_spec - | - HZ NUMBER - = { hz = $2; }| - TIMEZONE NUMBER - = { zone = 60 * $2; check_tz(); } | - TIMEZONE NUMBER DST NUMBER - = { zone = 60 * $2; dst = $4; check_tz(); } | - TIMEZONE NUMBER DST - = { zone = 60 * $2; dst = 1; check_tz(); } | - TIMEZONE FPNUMBER - = { zone = $2; check_tz(); } | - TIMEZONE FPNUMBER DST NUMBER - = { zone = $2; dst = $4; check_tz(); } | - TIMEZONE FPNUMBER DST - = { zone = $2; dst = 1; check_tz(); } | - TIMEZONE MINUS NUMBER - = { zone = -60 * $3; check_tz(); } | - TIMEZONE MINUS NUMBER DST NUMBER - = { zone = -60 * $3; dst = $5; check_tz(); } | - TIMEZONE MINUS NUMBER DST - = { zone = -60 * $3; dst = 1; check_tz(); } | - TIMEZONE MINUS FPNUMBER - = { zone = -$3; check_tz(); } | - TIMEZONE MINUS FPNUMBER DST NUMBER - = { zone = -$3; dst = $5; check_tz(); } | - TIMEZONE MINUS FPNUMBER DST - = { zone = -$3; dst = 1; check_tz(); } | - MAXUSERS NUMBER - = { maxusers = $2; }; + MACHINE Save_id + = { + if (!strcmp($2, "vax")) { + machine = MACHINE_VAX; + machinename = "vax"; + } else if (!strcmp($2, "tahoe")) { + machine = MACHINE_TAHOE; + machinename = "tahoe"; + } else if (!strcmp($2, "hp300")) { + machine = MACHINE_HP300; + machinename = "hp300"; + } else if (!strcmp($2, "i386")) { + machine = MACHINE_I386; + machinename = "i386"; + } else if (!strcmp($2, "mips")) { + machine = MACHINE_MIPS; + machinename = "mips"; + } else if (!strcmp($2, "pmax")) { + machine = MACHINE_PMAX; + machinename = "pmax"; + } else if (!strcmp($2, "pic32")) { + machine = MACHINE_PIC32; + machinename = "pic32"; + } else if (!strcmp($2, "luna68k")) { + machine = MACHINE_LUNA68K; + machinename = "luna68k"; + } else if (!strcmp($2, "news3400")) { + machine = MACHINE_NEWS3400; + machinename = "news3400"; + } else + yyerror("Unknown machine type"); + } + | + CPU Save_id + = { + struct cputype *cp = + (struct cputype *)malloc(sizeof (struct cputype)); + cp->cpu_name = ns($2); + cp->cpu_next = cputype; + cputype = cp; + free(temp_id); + } + | + OPTIONS Opt_list + | + MAKEOPTIONS Mkopt_list + | + IDENT ID + = { ident = ns($2); } + | + LDSCRIPT ID + = { ldscript = ns($2); } + | + System_spec + | + HZ NUMBER + = { hz = $2; } + | + TIMEZONE NUMBER + = { zone = 60 * $2; check_tz(); } + | + TIMEZONE NUMBER DST NUMBER + = { zone = 60 * $2; dst = $4; check_tz(); } + | + TIMEZONE NUMBER DST + = { zone = 60 * $2; dst = 1; check_tz(); } + | + TIMEZONE FPNUMBER + = { zone = $2; check_tz(); } + | + TIMEZONE FPNUMBER DST NUMBER + = { zone = $2; dst = $4; check_tz(); } + | + TIMEZONE FPNUMBER DST + = { zone = $2; dst = 1; check_tz(); } + | + TIMEZONE MINUS NUMBER + = { zone = -60 * $3; check_tz(); } + | + TIMEZONE MINUS NUMBER DST NUMBER + = { zone = -60 * $3; dst = $5; check_tz(); } + | + TIMEZONE MINUS NUMBER DST + = { zone = -60 * $3; dst = 1; check_tz(); } + | + TIMEZONE MINUS FPNUMBER + = { zone = -$3; check_tz(); } + | + TIMEZONE MINUS FPNUMBER DST NUMBER + = { zone = -$3; dst = $5; check_tz(); } + | + TIMEZONE MINUS FPNUMBER DST + = { zone = -$3; dst = 1; check_tz(); } + | + MAXUSERS NUMBER + = { maxusers = $2; } + ; System_spec: - System_id System_parameter_list - = { checksystemspec(*confp); } - ; + System_id System_parameter_list + = { checksystemspec(*confp); } + ; System_id: - CONFIG Save_id - = { mkconf($2); } - ; + CONFIG Save_id + = { mkconf($2); } + ; System_parameter_list: - System_parameter_list System_parameter - | System_parameter - ; + System_parameter_list System_parameter + | + System_parameter + ; System_parameter: - swap_spec - | root_spec - | dump_spec - | arg_spec - ; + swap_spec + | + root_spec + | + dump_spec + | + arg_spec + ; swap_spec: - SWAP optional_on swap_device_list - ; + SWAP optional_on swap_device_list + ; swap_device_list: - swap_device_list AND swap_device - | swap_device - ; + swap_device_list AND swap_device + | + swap_device + ; swap_device: - swap_device_spec optional_size optional_sflag - = { mkswap(*confp, $1, $2, $3); } - ; + swap_device_spec optional_size optional_sflag + = { mkswap(*confp, $1, $2, $3); } + ; swap_device_spec: - device_name - = { - struct file_list *fl = newflist(SWAPSPEC); + device_name + = { + struct file_list *fl = newflist(SWAPSPEC); - if (eq($1, "generic")) - fl->f_fn = $1; - else { - fl->f_swapdev = nametodev($1, 0, 'b'); - fl->f_fn = devtoname(fl->f_swapdev); - } - $$ = fl; - } - | major_minor - = { - struct file_list *fl = newflist(SWAPSPEC); + if (eq($1, "generic")) + fl->f_fn = $1; + else { + fl->f_swapdev = nametodev($1, 0, 'b'); + fl->f_fn = devtoname(fl->f_swapdev); + } + $$ = fl; + } + | + major_minor + = { + struct file_list *fl = newflist(SWAPSPEC); - fl->f_swapdev = $1; - fl->f_fn = devtoname($1); - $$ = fl; - } - ; + fl->f_swapdev = $1; + fl->f_fn = devtoname($1); + $$ = fl; + } + ; root_spec: - ROOT optional_on root_device_spec - = { - struct file_list *fl = *confp; + ROOT optional_on root_device_spec + = { + struct file_list *fl = *confp; - if (fl && fl->f_rootdev != NODEV) - yyerror("extraneous root device specification"); - else - fl->f_rootdev = $3; - } - ; + if (fl && fl->f_rootdev != NODEV) + yyerror("extraneous root device specification"); + else + fl->f_rootdev = $3; + } + ; root_device_spec: - device_name - = { $$ = nametodev($1, 0, 'a'); } - | major_minor - ; + device_name + = { $$ = nametodev($1, 0, 'a'); } + | + major_minor + ; dump_spec: - DUMPS optional_on dump_device_spec - = { - struct file_list *fl = *confp; + DUMPS optional_on dump_device_spec + = { + struct file_list *fl = *confp; - if (fl && fl->f_dumpdev != NODEV) - yyerror("extraneous dump device specification"); - else - fl->f_dumpdev = $3; - } - - ; + if (fl && fl->f_dumpdev != NODEV) + yyerror("extraneous dump device specification"); + else + fl->f_dumpdev = $3; + } + ; dump_device_spec: - device_name - = { $$ = nametodev($1, 0, 'b'); } - | major_minor - ; + device_name + = { $$ = nametodev($1, 0, 'b'); } + | + major_minor + ; arg_spec: - ARGS optional_on arg_device_spec - = { yyerror("arg device specification obsolete, ignored"); } - ; + ARGS optional_on arg_device_spec + = { yyerror("arg device specification obsolete, ignored"); } + ; arg_device_spec: - device_name - = { $$ = nametodev($1, 0, 'b'); } - | major_minor - ; + device_name + = { $$ = nametodev($1, 0, 'b'); } + | + major_minor + ; major_minor: - MAJOR NUMBER MINOR NUMBER - = { $$ = makedev($2, $4); } - ; + MAJOR NUMBER MINOR NUMBER + = { $$ = makedev($2, $4); } + ; optional_on: - ON - | /* empty */ - ; + ON + | + /* empty */ + ; optional_size: - SIZE NUMBER - = { $$ = $2; } - | /* empty */ - = { $$ = 0; } - ; + SIZE NUMBER + = { $$ = $2; } + | + /* empty */ + = { $$ = 0; } + ; optional_sflag: - SEQUENTIAL - = { $$ = 2; } - | /* empty */ - = { $$ = 0; } - ; + SEQUENTIAL + = { $$ = 2; } + | + /* empty */ + = { $$ = 0; } + ; device_name: - Save_id - = { $$ = $1; } - | Save_id NUMBER - = { - char buf[80]; + Save_id + = { $$ = $1; } + | + Save_id NUMBER + = { + char buf[80]; - (void) sprintf(buf, "%s%d", $1, $2); - $$ = ns(buf); free($1); - } - | Save_id NUMBER ID - = { - char buf[80]; + (void) sprintf(buf, "%s%d", $1, $2); + $$ = ns(buf); free($1); + } + | + Save_id NUMBER ID + = { + char buf[80]; - (void) sprintf(buf, "%s%d%s", $1, $2, $3); - $$ = ns(buf); free($1); - } - ; + (void) sprintf(buf, "%s%d%s", $1, $2, $3); + $$ = ns(buf); free($1); + } + ; Opt_list: - Opt_list COMMA Option - | - Option - ; + Opt_list COMMA Option + | + Option + ; Option: - Save_id - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = opt; - op->op_value = 0; - opt = op; - free(temp_id); - } | - Save_id EQUALS Opt_value - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = opt; - op->op_value = ns($3); - opt = op; - free(temp_id); - free(val_id); - } ; + Save_id + = { + struct opt *op = (struct opt *)malloc(sizeof (struct opt)); + op->op_name = ns($1); + op->op_next = opt; + op->op_value = 0; + opt = op; + free(temp_id); + } + | + Save_id EQUALS Opt_value + = { + struct opt *op = (struct opt *)malloc(sizeof (struct opt)); + op->op_name = ns($1); + op->op_next = opt; + op->op_value = ns($3); + opt = op; + free(temp_id); + free(val_id); + } + ; Opt_value: - ID - = { $$ = val_id = ns($1); } | - NUMBER - = { - char nb[16]; - (void) sprintf(nb, "%d", $1); - $$ = val_id = ns(nb); - } ; - + ID + = { $$ = val_id = ns($1); } + | + NUMBER + = { + char nb[16]; + (void) sprintf(nb, "%d", $1); + $$ = val_id = ns(nb); + } + ; Save_id: - ID - = { $$ = temp_id = ns($1); } - ; + ID + = { $$ = temp_id = ns($1); } + ; Mkopt_list: - Mkopt_list COMMA Mkoption - | - Mkoption - ; + Mkopt_list COMMA Mkoption + | + Mkoption + ; Mkoption: - Save_id EQUALS Opt_value - = { - struct opt *op = (struct opt *)malloc(sizeof (struct opt)); - op->op_name = ns($1); - op->op_next = mkopt; - op->op_value = ns($3); - mkopt = op; - free(temp_id); - free(val_id); - } ; + Save_id EQUALS Opt_value + = { + struct opt *op = (struct opt *)malloc(sizeof (struct opt)); + op->op_name = ns($1); + op->op_next = mkopt; + op->op_value = ns($3); + mkopt = op; + free(temp_id); + free(val_id); + } + ; Dev: - ID - = { $$ = ns($1); } - ; + ID + = { $$ = ns($1); } + ; Device_spec: - DEVICE Dev_name Dev_info Int_spec - = { cur.d_type = DEVICE; } | - MASTER Dev_name Dev_info Int_spec - = { cur.d_type = MASTER; } | - DISK Dev_name Dev_info Int_spec - = { cur.d_dk = 1; cur.d_type = DEVICE; } | - CONTROLLER Dev_name Dev_info Int_spec - = { cur.d_type = CONTROLLER; } | - PSEUDO_DEVICE Init_dev Dev - = { - cur.d_name = $3; - cur.d_type = PSEUDO_DEVICE; - } | - PSEUDO_DEVICE Init_dev Dev NUMBER - = { - cur.d_name = $3; - cur.d_type = PSEUDO_DEVICE; - cur.d_slave = $4; - } | - PSEUDO_DEVICE Dev_name Cdev_init Cdev_info - = { - if (!eq(cur.d_name, "cd")) - yyerror("improper spec for pseudo-device"); - seen_cd = 1; - cur.d_type = DEVICE; - verifycomp(*compp); - }; + DEVICE Dev_name Dev_info Int_spec + = { cur.d_type = DEVICE; } + | + MASTER Dev_name Dev_info Int_spec + = { cur.d_type = MASTER; } + | + DISK Dev_name Dev_info Int_spec + = { cur.d_dk = 1; cur.d_type = DEVICE; } + | + CONTROLLER Dev_name Dev_info Int_spec + = { cur.d_type = CONTROLLER; } + | + PSEUDO_DEVICE Init_dev Dev + = { + cur.d_name = $3; + cur.d_type = PSEUDO_DEVICE; + } + | + PSEUDO_DEVICE Init_dev Dev NUMBER + = { + cur.d_name = $3; + cur.d_type = PSEUDO_DEVICE; + cur.d_slave = $4; + } + | + PSEUDO_DEVICE Dev_name Cdev_init Cdev_info + = { + if (!eq(cur.d_name, "cd")) + yyerror("improper spec for pseudo-device"); + seen_cd = 1; + cur.d_type = DEVICE; + verifycomp(*compp); + } + ; Cdev_init: - /* lambda */ - = { mkcomp(&cur); }; + /* lambda */ + = { mkcomp(&cur); }; Cdev_info: - optional_on comp_device_list comp_option_list - ; + optional_on comp_device_list comp_option_list + ; comp_device_list: - comp_device_list AND comp_device - | comp_device - ; + comp_device_list AND comp_device + | + comp_device + ; comp_device: - comp_device_spec - = { addcomp(*compp, $1); } - ; + comp_device_spec + = { addcomp(*compp, $1); } + ; comp_device_spec: - device_name - = { - struct file_list *fl = newflist(COMPSPEC); + device_name + = { + struct file_list *fl = newflist(COMPSPEC); - fl->f_compdev = nametodev($1, 0, 'c'); - fl->f_fn = devtoname(fl->f_compdev); - $$ = fl; - } - | major_minor - = { - struct file_list *fl = newflist(COMPSPEC); + fl->f_compdev = nametodev($1, 0, 'c'); + fl->f_fn = devtoname(fl->f_compdev); + $$ = fl; + } + | + major_minor + = { + struct file_list *fl = newflist(COMPSPEC); - fl->f_compdev = $1; - fl->f_fn = devtoname($1); - $$ = fl; - } - ; + fl->f_compdev = $1; + fl->f_fn = devtoname($1); + $$ = fl; + } + ; comp_option_list: - comp_option_list comp_option - | - /* lambda */ - ; + comp_option_list comp_option + | + /* lambda */ + ; comp_option: - INTERLEAVE NUMBER - = { cur.d_pri = $2; } | - FLAGS NUMBER - = { cur.d_flags = $2; }; + INTERLEAVE NUMBER + = { cur.d_pri = $2; } + | + FLAGS NUMBER + = { cur.d_flags = $2; } + ; 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; - }; + 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; + } + ; Init_dev: - /* lambda */ - = { init_dev(&cur); }; + /* lambda */ + = { init_dev(&cur); } + ; Dev_info: - Con_info Info_list - | - Info_list - | - /* lambda */ - ; + Con_info Info_list + | + Info_list + | + /* lambda */ + ; Con_info: - AT Dev NUMBER - = { - if (eq(cur.d_name, "mba") || eq(cur.d_name, "uba")) { - (void) sprintf(errbuf, - "%s must be connected to a nexus", cur.d_name); - yyerror(errbuf); - } - cur.d_conn = connect($2, $3); - } | - AT NEXUS NUMBER - = { check_nexus(&cur, $3); cur.d_conn = TO_NEXUS; }; + AT Dev NUMBER + = { + if (eq(cur.d_name, "mba") || eq(cur.d_name, "uba")) { + (void) sprintf(errbuf, + "%s must be connected to a nexus", cur.d_name); + yyerror(errbuf); + } + cur.d_conn = connect($2, $3); + } + | + AT NEXUS NUMBER + = { check_nexus(&cur, $3); cur.d_conn = TO_NEXUS; } + ; Info_list: - Info_list Info - | - /* lambda */ - ; + Info_list Info + | + /* lambda */ + ; Info: - CSR NUMBER - = { cur.d_addr = $2; } | - DRIVE NUMBER - = { cur.d_drive = $2; } | - SLAVE NUMBER - = { - if (cur.d_conn != 0 && cur.d_conn != TO_NEXUS && - cur.d_conn->d_type == MASTER) - cur.d_slave = $2; - else - yyerror("can't specify slave--not to master"); - } | - IRQ NUMBER - = { cur.d_irq = $2; } | - DRQ NUMBER - = { cur.d_drq = $2; } | - IOMEM NUMBER - = { cur.d_maddr = $2; } | - IOSIZ NUMBER - = { cur.d_msize = $2; } | - PORT device_name - = { cur.d_port = ns($2); } | - PORT NUMBER - = { cur.d_portn = $2; } | - TTY - = { cur.d_mask = "tty"; } | - BIO - = { cur.d_mask = "bio"; } | - NET - = { cur.d_mask = "net"; } | - FLAGS NUMBER - = { cur.d_flags = $2; }; + CSR NUMBER + = { cur.d_addr = $2; } + | + DRIVE NUMBER + = { cur.d_drive = $2; } + | + SLAVE NUMBER + = { + if (cur.d_conn != 0 && cur.d_conn != TO_NEXUS && + cur.d_conn->d_type == MASTER) + cur.d_slave = $2; + else + yyerror("can't specify slave--not to master"); + } + | + IRQ NUMBER + = { cur.d_irq = $2; } + | + DRQ NUMBER + = { cur.d_drq = $2; } + | + IOMEM NUMBER + = { cur.d_maddr = $2; } + | + IOSIZ NUMBER + = { cur.d_msize = $2; } + | + PORT device_name + = { cur.d_port = ns($2); } + | + PORT NUMBER + = { cur.d_portn = $2; } + | + TTY + = { cur.d_mask = "tty"; } + | + BIO + = { cur.d_mask = "bio"; } + | + NET + = { cur.d_mask = "net"; } + | + FLAGS NUMBER + = { cur.d_flags = $2; } + ; Int_spec: - VECTOR Id_list - = { cur.d_vec = $2; } | - PRIORITY NUMBER - = { cur.d_pri = $2; } | - /* lambda */ - ; + VECTOR Id_list + = { cur.d_vec = $2; } + | + PRIORITY NUMBER + = { cur.d_pri = $2; } + | + /* lambda */ + ; Id_list: - Save_id - = { - struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); - a->id = $1; a->id_next = 0; $$ = a; - } | - Save_id Id_list = - { - struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); - a->id = $1; a->id_next = $2; $$ = a; - }; - + Save_id + = { + struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); + a->id = $1; a->id_next = 0; $$ = a; + } + | + Save_id Id_list = + { + struct idlst *a = (struct idlst *)malloc(sizeof(struct idlst)); + a->id = $1; a->id_next = $2; $$ = a; + } + ; %% void yyerror(s) - char *s; + char *s; { - - fprintf(stderr, "config: line %d: %s\n", yyline + 1, s); + fprintf(stderr, "config: line %d: %s\n", yyline + 1, s); } /* @@ -638,145 +705,147 @@ void yyerror(s) */ char * ns(str) - register char *str; + register char *str; { - register char *cp; + register char *cp; - cp = malloc((unsigned)(strlen(str)+1)); - (void) strcpy(cp, str); - return (cp); + cp = malloc((unsigned)(strlen(str)+1)); + (void) strcpy(cp, str); + return (cp); } /* * add a device to the list of devices */ void newdev(dp) - register struct device *dp; + register struct device *dp; { - register struct device *np; + register struct device *np; - np = (struct device *) malloc(sizeof *np); - *np = *dp; - np->d_next = 0; - if (curp == 0) - dtab = np; - else - curp->d_next = np; - curp = np; + np = (struct device *) malloc(sizeof *np); + *np = *dp; + np->d_next = 0; + if (curp == 0) + dtab = np; + else + curp->d_next = np; + curp = np; } /* * note that a configuration should be made */ void mkconf(sysname) - char *sysname; + char *sysname; { - register struct file_list *fl, **flp; + register struct file_list *fl, **flp; - fl = (struct file_list *) malloc(sizeof *fl); - fl->f_type = SYSTEMSPEC; - fl->f_needs = sysname; - fl->f_rootdev = NODEV; - fl->f_dumpdev = NODEV; - fl->f_fn = 0; - fl->f_next = 0; - for (flp = confp; *flp; flp = &(*flp)->f_next) - ; - *flp = fl; - confp = flp; + fl = (struct file_list *) malloc(sizeof *fl); + fl->f_type = SYSTEMSPEC; + fl->f_needs = sysname; + fl->f_rootdev = NODEV; + fl->f_dumpdev = NODEV; + fl->f_fn = 0; + fl->f_next = 0; + for (flp = confp; *flp; flp = &(*flp)->f_next) + ; + *flp = fl; + confp = flp; } struct file_list * newflist(ftype) - u_char ftype; + u_char ftype; { - struct file_list *fl = (struct file_list *)malloc(sizeof (*fl)); + struct file_list *fl = (struct file_list *)malloc(sizeof (*fl)); - fl->f_type = ftype; - fl->f_next = 0; - fl->f_swapdev = NODEV; - fl->f_swapsize = 0; - fl->f_needs = 0; - fl->f_fn = 0; - return (fl); + fl->f_type = ftype; + fl->f_next = 0; + fl->f_swapdev = NODEV; + fl->f_swapsize = 0; + fl->f_needs = 0; + fl->f_fn = 0; + return (fl); } /* * Add a swap device to the system's configuration */ void mkswap(system, fl, size, flag) - struct file_list *system, *fl; - int size, flag; + struct file_list *system, *fl; + int size, flag; { - register struct file_list **flp; + register struct file_list **flp; - if (system == 0 || system->f_type != SYSTEMSPEC) { - yyerror("\"swap\" spec precedes \"config\" specification"); - return; - } - if (size < 0) { - yyerror("illegal swap partition size"); - return; - } - /* - * Append swap description to the end of the list. - */ - flp = &system->f_next; - for (; *flp && (*flp)->f_type == SWAPSPEC; flp = &(*flp)->f_next) - ; - fl->f_next = *flp; - *flp = fl; - fl->f_swapsize = size; - fl->f_swapflag = flag; - /* - * If first swap device for this system, - * set up f_fn field to insure swap - * files are created with unique names. - */ - if (system->f_fn) - return; - if (eq(fl->f_fn, "generic")) - system->f_fn = ns(fl->f_fn); - else - system->f_fn = ns(system->f_needs); + if (system == 0 || system->f_type != SYSTEMSPEC) { + yyerror("\"swap\" spec precedes \"config\" specification"); + return; + } + if (size < 0) { + yyerror("illegal swap partition size"); + return; + } + /* + * Append swap description to the end of the list. + */ + flp = &system->f_next; + for (; *flp && (*flp)->f_type == SWAPSPEC; flp = &(*flp)->f_next) + ; + fl->f_next = *flp; + *flp = fl; + fl->f_swapsize = size; + fl->f_swapflag = flag; + + /* + * If first swap device for this system, + * set up f_fn field to insure swap + * files are created with unique names. + */ + if (system->f_fn) + return; + if (eq(fl->f_fn, "generic")) + system->f_fn = ns(fl->f_fn); + else + system->f_fn = ns(system->f_needs); } void mkcomp(dp) - register struct device *dp; + register struct device *dp; { - register struct file_list *fl, **flp; - char buf[80]; + register struct file_list *fl, **flp; + char buf[80]; - fl = (struct file_list *) malloc(sizeof *fl); - fl->f_type = COMPDEVICE; - fl->f_compinfo = dp->d_unit; - fl->f_fn = ns(dp->d_name); - (void) sprintf(buf, "%s%d", dp->d_name, dp->d_unit); - fl->f_needs = ns(buf); - fl->f_next = 0; - for (flp = compp; *flp; flp = &(*flp)->f_next) - ; - *flp = fl; - compp = flp; + fl = (struct file_list *) malloc(sizeof *fl); + fl->f_type = COMPDEVICE; + fl->f_compinfo = dp->d_unit; + fl->f_fn = ns(dp->d_name); + (void) sprintf(buf, "%s%d", dp->d_name, dp->d_unit); + fl->f_needs = ns(buf); + fl->f_next = 0; + for (flp = compp; *flp; flp = &(*flp)->f_next) + ; + *flp = fl; + compp = flp; } void addcomp(compdev, fl) - struct file_list *compdev, *fl; + struct file_list *compdev, *fl; { - register struct file_list **flp; + register struct file_list **flp; - if (compdev == 0 || compdev->f_type != COMPDEVICE) { - yyerror("component spec precedes device specification"); - return; - } - /* - * Append description to the end of the list. - */ - flp = &compdev->f_next; - for (; *flp && (*flp)->f_type == COMPSPEC; flp = &(*flp)->f_next) - ; - fl->f_next = *flp; - *flp = fl; + if (compdev == 0 || compdev->f_type != COMPDEVICE) { + yyerror("component spec precedes device specification"); + return; + } + + /* + * Append description to the end of the list. + */ + flp = &compdev->f_next; + for (; *flp && (*flp)->f_type == COMPSPEC; flp = &(*flp)->f_next) + ; + fl->f_next = *flp; + *flp = fl; } /* @@ -785,28 +854,28 @@ void addcomp(compdev, fl) */ struct device * connect(dev, num) - register char *dev; - register int num; + register char *dev; + register int num; { - register struct device *dp; - struct device *huhcon(); + register struct device *dp; + struct device *huhcon(); - if (num == QUES) - return (huhcon(dev)); - for (dp = dtab; dp != 0; dp = dp->d_next) { - if ((num != dp->d_unit) || !eq(dev, dp->d_name)) - continue; - if (dp->d_type != CONTROLLER && dp->d_type != MASTER) { - (void) sprintf(errbuf, - "%s connected to non-controller", dev); - yyerror(errbuf); - return (0); - } - return (dp); - } - (void) sprintf(errbuf, "%s %d not defined", dev, num); - yyerror(errbuf); - return (0); + if (num == QUES) + return (huhcon(dev)); + for (dp = dtab; dp != 0; dp = dp->d_next) { + if ((num != dp->d_unit) || !eq(dev, dp->d_name)) + continue; + if (dp->d_type != CONTROLLER && dp->d_type != MASTER) { + (void) sprintf(errbuf, + "%s connected to non-controller", dev); + yyerror(errbuf); + return (0); + } + return (dp); + } + (void) sprintf(errbuf, "%s %d not defined", dev, num); + yyerror(errbuf); + return (0); } /* @@ -814,121 +883,121 @@ connect(dev, num) */ struct device * huhcon(dev) - register char *dev; + register char *dev; { - register struct device *dp, *dcp; - struct device rdev; - int oldtype; + register struct device *dp, *dcp; + struct device rdev; + int oldtype; - /* - * First make certain that there are some of these to wildcard on - */ - for (dp = dtab; dp != 0; dp = dp->d_next) - if (eq(dp->d_name, dev)) - break; - if (dp == 0) { - (void) sprintf(errbuf, "no %s's to wildcard", dev); - yyerror(errbuf); - return (0); - } - oldtype = dp->d_type; - dcp = dp->d_conn; - /* - * Now see if there is already a wildcard entry for this device - * (e.g. Search for a "uba ?") - */ - for (; dp != 0; dp = dp->d_next) - if (eq(dev, dp->d_name) && dp->d_unit == -1) - break; - /* - * If there isn't, make one because everything needs to be connected - * to something. - */ - if (dp == 0) { - dp = &rdev; - init_dev(dp); - dp->d_unit = QUES; - dp->d_name = ns(dev); - dp->d_type = oldtype; - newdev(dp); - dp = curp; - /* - * Connect it to the same thing that other similar things are - * connected to, but make sure it is a wildcard unit - * (e.g. up connected to sc ?, here we make connect sc? to a - * uba?). If other things like this are on the NEXUS or - * if they aren't connected to anything, then make the same - * connection, else call ourself to connect to another - * unspecific device. - */ - if (dcp == TO_NEXUS || dcp == 0) - dp->d_conn = dcp; - else - dp->d_conn = connect(dcp->d_name, QUES); - } - return (dp); + /* + * First make certain that there are some of these to wildcard on + */ + for (dp = dtab; dp != 0; dp = dp->d_next) + if (eq(dp->d_name, dev)) + break; + if (dp == 0) { + (void) sprintf(errbuf, "no %s's to wildcard", dev); + yyerror(errbuf); + return (0); + } + oldtype = dp->d_type; + dcp = dp->d_conn; + + /* + * Now see if there is already a wildcard entry for this device + * (e.g. Search for a "uba ?") + */ + for (; dp != 0; dp = dp->d_next) + if (eq(dev, dp->d_name) && dp->d_unit == -1) + break; + /* + * If there isn't, make one because everything needs to be connected + * to something. + */ + if (dp == 0) { + dp = &rdev; + init_dev(dp); + dp->d_unit = QUES; + dp->d_name = ns(dev); + dp->d_type = oldtype; + newdev(dp); + dp = curp; + + /* + * Connect it to the same thing that other similar things are + * connected to, but make sure it is a wildcard unit + * (e.g. up connected to sc ?, here we make connect sc? to a + * uba?). If other things like this are on the NEXUS or + * if they aren't connected to anything, then make the same + * connection, else call ourself to connect to another + * unspecific device. + */ + if (dcp == TO_NEXUS || dcp == 0) + dp->d_conn = dcp; + else + dp->d_conn = connect(dcp->d_name, QUES); + } + return (dp); } void init_dev(dp) - register struct device *dp; + register struct device *dp; { - - dp->d_name = "OHNO!!!"; - dp->d_type = DEVICE; - dp->d_conn = 0; - dp->d_vec = 0; - dp->d_addr = dp->d_flags = dp->d_dk = 0; - dp->d_pri = -1; - dp->d_slave = dp->d_drive = dp->d_unit = UNKNOWN; - dp->d_port = (char *)0; - dp->d_portn = 0; - dp->d_irq = -1; - dp->d_drq = -1; - dp->d_maddr = 0; - dp->d_msize = 0; - dp->d_mask = "null"; + dp->d_name = "OHNO!!!"; + dp->d_type = DEVICE; + dp->d_conn = 0; + dp->d_vec = 0; + dp->d_addr = dp->d_flags = dp->d_dk = 0; + dp->d_pri = -1; + dp->d_slave = dp->d_drive = dp->d_unit = UNKNOWN; + dp->d_port = (char *)0; + dp->d_portn = 0; + dp->d_irq = -1; + dp->d_drq = -1; + dp->d_maddr = 0; + dp->d_msize = 0; + dp->d_mask = "null"; } /* * make certain that this is a reasonable type of thing to connect to a nexus */ void check_nexus(dev, num) - register struct device *dev; - int num; + register struct device *dev; + int num; { + switch (machine) { - 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_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_TAHOE: - if (!eq(dev->d_name, "vba")) - yyerror("only vba's should be connected to the nexus"); - break; + case MACHINE_HP300: + case MACHINE_LUNA68K: + if (num != QUES) + dev->d_addr = num; + break; - case MACHINE_HP300: - case MACHINE_LUNA68K: - 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; - case MACHINE_I386: - if (!eq(dev->d_name, "isa")) - yyerror("only isa's should be connected to the nexus"); - break; - - case MACHINE_NEWS3400: - if (!eq(dev->d_name, "iop") && !eq(dev->d_name, "hb") && - !eq(dev->d_name, "vme")) - yyerror("only iop's, hb's and vme's should be connected to the nexus"); - break; - } + case MACHINE_NEWS3400: + if (!eq(dev->d_name, "iop") && !eq(dev->d_name, "hb") && + !eq(dev->d_name, "vme")) + yyerror("only iop's, hb's and vme's should be connected to the nexus"); + break; + } } /* @@ -936,10 +1005,10 @@ void check_nexus(dev, num) */ void check_tz() { - if (abs(zone) > 12 * 60) - yyerror("timezone is unreasonable"); - else - hadtz = 1; + if (abs(zone) > 12 * 60) + yyerror("timezone is unreasonable"); + else + hadtz = 1; } /* @@ -947,70 +1016,73 @@ void check_tz() * rules on root, argument, dump, and swap devices. */ void checksystemspec(fl) - register struct file_list *fl; + register struct file_list *fl; { - char buf[BUFSIZ]; - register struct file_list *swap; - int generic; + char buf[BUFSIZ]; + register struct file_list *swap; + int generic; - if (fl == 0 || fl->f_type != SYSTEMSPEC) { - yyerror("internal error, bad system specification"); - exit(1); - } - swap = fl->f_next; - generic = swap && swap->f_type == SWAPSPEC && eq(swap->f_fn, "generic"); - if (fl->f_rootdev == NODEV && !generic) { - yyerror("no root device specified"); - exit(1); - } - /* - * Default swap area to be in 'b' partition of root's - * device. If root specified to be other than on 'a' - * partition, give warning, something probably amiss. - */ - if (swap == 0 || swap->f_type != SWAPSPEC) { - dev_t dev; + if (fl == 0 || fl->f_type != SYSTEMSPEC) { + yyerror("internal error, bad system specification"); + exit(1); + } + swap = fl->f_next; + generic = swap && swap->f_type == SWAPSPEC && eq(swap->f_fn, "generic"); + if (fl->f_rootdev == NODEV && !generic) { + yyerror("no root device specified"); + exit(1); + } - swap = newflist(SWAPSPEC); - dev = fl->f_rootdev; - if (minor(dev) & 07) { - (void) sprintf(buf, -"Warning, swap defaulted to 'b' partition with root on '%c' partition", - (minor(dev) & 07) + 'a'); - yyerror(buf); - } - swap->f_swapdev = - makedev(major(dev), (minor(dev) &~ 07) | ('b' - 'a')); - swap->f_fn = devtoname(swap->f_swapdev); - mkswap(fl, swap, 0, 0); - } - /* - * Make sure a generic swap isn't specified, along with - * other stuff (user must really be confused). - */ - if (generic) { - if (fl->f_rootdev != NODEV) - yyerror("root device specified with generic swap"); - if (fl->f_dumpdev != NODEV) - yyerror("dump device specified with generic swap"); - return; - } - /* - * Default dump device and warn if place is not a - * swap area. - */ - if (fl->f_dumpdev == NODEV) - fl->f_dumpdev = swap->f_swapdev; - if (fl->f_dumpdev != swap->f_swapdev) { - struct file_list *p = swap->f_next; + /* + * Default swap area to be in 'b' partition of root's + * device. If root specified to be other than on 'a' + * partition, give warning, something probably amiss. + */ + if (swap == 0 || swap->f_type != SWAPSPEC) { + dev_t dev; - for (; p && p->f_type == SWAPSPEC; p = p->f_next) - if (fl->f_dumpdev == p->f_swapdev) - return; - (void) sprintf(buf, - "Warning: dump device is not a swap partition"); - yyerror(buf); - } + swap = newflist(SWAPSPEC); + dev = fl->f_rootdev; + if (minor(dev) & 07) { + sprintf(buf, + "Warning, swap defaulted to 'b' partition with root on '%c' partition", + (minor(dev) & 07) + 'a'); + yyerror(buf); + } + swap->f_swapdev = + makedev(major(dev), (minor(dev) &~ 07) | ('b' - 'a')); + swap->f_fn = devtoname(swap->f_swapdev); + mkswap(fl, swap, 0, 0); + } + + /* + * Make sure a generic swap isn't specified, along with + * other stuff (user must really be confused). + */ + if (generic) { + if (fl->f_rootdev != NODEV) + yyerror("root device specified with generic swap"); + if (fl->f_dumpdev != NODEV) + yyerror("dump device specified with generic swap"); + return; + } + + /* + * Default dump device and warn if place is not a + * swap area. + */ + if (fl->f_dumpdev == NODEV) + fl->f_dumpdev = swap->f_swapdev; + if (fl->f_dumpdev != swap->f_swapdev) { + struct file_list *p = swap->f_next; + + for (; p && p->f_type == SWAPSPEC; p = p->f_next) + if (fl->f_dumpdev == p->f_swapdev) + return; + (void) sprintf(buf, + "Warning: dump device is not a swap partition"); + yyerror(buf); + } } /* @@ -1019,25 +1091,27 @@ void checksystemspec(fl) */ void verifysystemspecs() { - register struct file_list *fl; - dev_t checked[50], *verifyswap(); - register dev_t *pchecked = checked; + register struct file_list *fl; + dev_t checked[50], *verifyswap(); + register dev_t *pchecked = checked; - for (fl = conf_list; fl; fl = fl->f_next) { - if (fl->f_type != SYSTEMSPEC) - continue; - if (!finddev(fl->f_rootdev)) - deverror(fl->f_needs, "root"); - *pchecked++ = fl->f_rootdev; - pchecked = verifyswap(fl->f_next, checked, pchecked); -#define samedev(dev1, dev2) \ - ((minor(dev1) &~ 07) != (minor(dev2) &~ 07)) - if (!alreadychecked(fl->f_dumpdev, checked, pchecked)) { - if (!finddev(fl->f_dumpdev)) - deverror(fl->f_needs, "dump"); - *pchecked++ = fl->f_dumpdev; - } - } + for (fl = conf_list; fl; fl = fl->f_next) { + if (fl->f_type != SYSTEMSPEC) + continue; + if (!finddev(fl->f_rootdev)) + deverror(fl->f_needs, "root"); + *pchecked++ = fl->f_rootdev; + pchecked = verifyswap(fl->f_next, checked, pchecked); + +#define samedev(dev1, dev2) \ + ((minor(dev1) &~ 07) != (minor(dev2) &~ 07)) + + if (!alreadychecked(fl->f_dumpdev, checked, pchecked)) { + if (!finddev(fl->f_dumpdev)) + deverror(fl->f_needs, "dump"); + *pchecked++ = fl->f_dumpdev; + } + } } /* @@ -1045,39 +1119,38 @@ void verifysystemspecs() */ dev_t * verifyswap(fl, checked, pchecked) - register struct file_list *fl; - dev_t checked[]; - register dev_t *pchecked; + register struct file_list *fl; + dev_t checked[]; + register dev_t *pchecked; { - - for (;fl && fl->f_type == SWAPSPEC; fl = fl->f_next) { - if (eq(fl->f_fn, "generic")) - continue; - if (alreadychecked(fl->f_swapdev, checked, pchecked)) - continue; - if (!finddev(fl->f_swapdev)) - fprintf(stderr, - "config: swap device %s not configured", fl->f_fn); - *pchecked++ = fl->f_swapdev; - } - return (pchecked); + for (;fl && fl->f_type == SWAPSPEC; fl = fl->f_next) { + if (eq(fl->f_fn, "generic")) + continue; + if (alreadychecked(fl->f_swapdev, checked, pchecked)) + continue; + if (!finddev(fl->f_swapdev)) + fprintf(stderr, + "config: swap device %s not configured", fl->f_fn); + *pchecked++ = fl->f_swapdev; + } + return (pchecked); } /* * Verify that components of a compound device have themselves been config'ed */ void verifycomp(fl) - register struct file_list *fl; + register struct file_list *fl; { - char *dname = fl->f_needs; + char *dname = fl->f_needs; - for (fl = fl->f_next; fl; fl = fl->f_next) { - if (fl->f_type != COMPSPEC || finddev(fl->f_compdev)) - continue; - fprintf(stderr, - "config: %s: component device %s not configured\n", - dname, fl->f_needs); - } + for (fl = fl->f_next; fl; fl = fl->f_next) { + if (fl->f_type != COMPSPEC || finddev(fl->f_compdev)) + continue; + fprintf(stderr, + "config: %s: component device %s not configured\n", + dname, fl->f_needs); + } } /* @@ -1085,23 +1158,23 @@ void verifycomp(fl) * for it's existence in the configuration? */ int alreadychecked(dev, list, last) - dev_t dev, list[]; - register dev_t *last; + dev_t dev, list[]; + register dev_t *last; { - register dev_t *p; + register dev_t *p; - for (p = list; p < last; p++) - if (samedev(*p, dev)) - return (1); - return (0); + for (p = list; p < last; p++) + if (samedev(*p, dev)) + return (1); + return (0); } void deverror(systemname, devtype) - char *systemname, *devtype; + char *systemname, *devtype; { - fprintf(stderr, "config: %s: %s device not configured\n", - systemname, devtype); + fprintf(stderr, "config: %s: %s device not configured\n", + systemname, devtype); } /* @@ -1111,9 +1184,8 @@ void deverror(systemname, devtype) */ /*ARGSUSED*/ int finddev(dev) - dev_t dev; + dev_t dev; { - - /* punt on this right now */ - return (1); + /* punt on this right now */ + return (1); } diff --git a/tools/kconfig/lang.l b/tools/kconfig/lang.l index 12431d1..51f3322 100644 --- a/tools/kconfig/lang.l +++ b/tools/kconfig/lang.l @@ -4,7 +4,7 @@ %{ /*- * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -16,8 +16,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -34,7 +34,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)lang.l 8.1 (Berkeley) 6/6/93 + * @(#)lang.l 8.1 (Berkeley) 6/6/93 */ #include @@ -48,156 +48,156 @@ */ struct kt { - char *kt_name; - int kt_val; + char *kt_name; + int kt_val; } key_words[] = { - { "and", AND }, - { "args", ARGS }, - { "at", AT }, + { "and", AND }, + { "args", ARGS }, + { "at", AT }, #if MACHINE_I386 - { "bio", BIO }, + { "bio", BIO }, #endif - { "config", CONFIG }, - { "controller", CONTROLLER }, - { "cpu", CPU }, - { "csr", CSR }, - { "device", DEVICE }, - { "disk", DISK }, - { "drive", DRIVE }, + { "config", CONFIG }, + { "controller", CONTROLLER }, + { "cpu", CPU }, + { "csr", CSR }, + { "device", DEVICE }, + { "disk", DISK }, + { "drive", DRIVE }, #if MACHINE_I386 - { "drq", DRQ }, + { "drq", DRQ }, #endif - { "dst", DST }, - { "dumps", DUMPS }, - { "flags", FLAGS }, - { "hz", HZ }, - { "ident", IDENT }, - { "interleave", INTERLEAVE }, + { "dst", DST }, + { "dumps", DUMPS }, + { "flags", FLAGS }, + { "hz", HZ }, + { "ident", IDENT }, + { "interleave", INTERLEAVE }, #if MACHINE_I386 - { "iomem", IOMEM }, - { "iosiz", IOSIZ }, - { "irq", IRQ }, + { "iomem", IOMEM }, + { "iosiz", IOSIZ }, + { "irq", IRQ }, #endif - { "ldscript", LDSCRIPT }, - { "machine", MACHINE }, - { "major", MAJOR }, - { "makeoptions", MAKEOPTIONS }, - { "master", MASTER }, - { "maxusers", MAXUSERS }, - { "minor", MINOR }, + { "ldscript", LDSCRIPT }, + { "machine", MACHINE }, + { "major", MAJOR }, + { "makeoptions", MAKEOPTIONS }, + { "master", MASTER }, + { "maxusers", MAXUSERS }, + { "minor", MINOR }, #if MACHINE_I386 - { "net", NET }, + { "net", NET }, #endif - { "nexus", NEXUS }, - { "on", ON }, - { "options", OPTIONS }, + { "nexus", NEXUS }, + { "on", ON }, + { "options", OPTIONS }, #if MACHINE_I386 - { "port", PORT }, + { "port", PORT }, #endif - { "priority", PRIORITY }, - { "pseudo-device",PSEUDO_DEVICE }, - { "root", ROOT }, + { "priority", PRIORITY }, + { "pseudo-device", PSEUDO_DEVICE }, + { "root", ROOT }, #if MACHINE_HP300 || MACHINE_LUNA68K - { "scode", NEXUS }, + { "scode", NEXUS }, #endif - { "sequential", SEQUENTIAL }, - { "size", SIZE }, - { "slave", SLAVE }, - { "swap", SWAP }, - { "tape", DEVICE }, + { "sequential", SEQUENTIAL }, + { "size", SIZE }, + { "slave", SLAVE }, + { "swap", SWAP }, + { "tape", DEVICE }, #if MACHINE_I386 - { "tty", TTY }, + { "tty", TTY }, #endif - { "timezone", TIMEZONE }, - { "trace", TRACE }, - { "vector", VECTOR }, - { 0, 0 }, + { "timezone", TIMEZONE }, + { "trace", TRACE }, + { "vector", VECTOR }, + { 0, 0 }, }; int kw_lookup(char *word); int octal(char *str); int hex(char *str); %} -WORD [A-Za-z_][-A-Za-z_]* +WORD [A-Za-z_][-A-Za-z_]* %% -{WORD} { - int i; +{WORD} { + int i; - if ((i = kw_lookup(yytext)) == -1) - { - yylval.str = yytext; - tprintf("id(%s) ", yytext); - return ID; - } - tprintf("(%s) ", yytext); - return i; - } -\"[^"]+\" { - yytext[strlen(yytext)-1] = '\0'; - yylval.str = yytext + 1; - return ID; - } -0[0-7]* { - yylval.val = octal(yytext); - tprintf("#O:%o ", yylval.val); - return NUMBER; - } -0x[0-9a-fA-F]+ { - yylval.val = hex(yytext); - tprintf("#X:%x ", yylval.val); - return NUMBER; - } -[1-9][0-9]* { - yylval.val = atoi(yytext); - tprintf("#D:%d ", yylval.val); - return NUMBER; - } -[0-9]"."[0-9]* { - double atof(); - yylval.val = (int) (60 * atof(yytext) + 0.5); - return FPNUMBER; - } -"-" { - return MINUS; - } -"?" { - yylval.val = -1; - tprintf("? "); - return NUMBER; - } -\n/[ \t] { - yyline++; - tprintf("\n... "); - } -\n { - yyline++; - tprintf("\n"); - return SEMICOLON; - } -#.* { /* Ignored (comment) */; } -[ \t]* { /* Ignored (white space) */; } -";" { return SEMICOLON; } -"," { return COMMA; } -"=" { return EQUALS; } -"@" { return AT; } -. { return yytext[0]; } + if ((i = kw_lookup(yytext)) == -1) + { + yylval.str = yytext; + tprintf("id(%s) ", yytext); + return ID; + } + tprintf("(%s) ", yytext); + return i; + } +\"[^"]+\" { + yytext[strlen(yytext)-1] = '\0'; + yylval.str = yytext + 1; + return ID; + } +0[0-7]* { + yylval.val = octal(yytext); + tprintf("#O:%o ", yylval.val); + return NUMBER; + } +0x[0-9a-fA-F]+ { + yylval.val = hex(yytext); + tprintf("#X:%x ", yylval.val); + return NUMBER; + } +[1-9][0-9]* { + yylval.val = atoi(yytext); + tprintf("#D:%d ", yylval.val); + return NUMBER; + } +[0-9]"."[0-9]* { + double atof(); + yylval.val = (int) (60 * atof(yytext) + 0.5); + return FPNUMBER; + } +"-" { + return MINUS; + } +"?" { + yylval.val = -1; + tprintf("? "); + return NUMBER; + } +\n/[ \t] { + yyline++; + tprintf("\n... "); + } +\n { + yyline++; + tprintf("\n"); + return SEMICOLON; + } +#.* { /* Ignored (comment) */; } +[ \t]* { /* Ignored (white space) */; } +";" { return SEMICOLON; } +"," { return COMMA; } +"=" { return EQUALS; } +"@" { return AT; } +. { return yytext[0]; } %% /* * kw_lookup - * Look up a string in the keyword table. Returns a -1 if the - * string is not a keyword otherwise it returns the keyword number + * Look up a string in the keyword table. Returns a -1 if the + * string is not a keyword otherwise it returns the keyword number */ int kw_lookup(word) register char *word; { - register struct kt *kp; + register struct kt *kp; - for (kp = key_words; kp->kt_name != 0; kp++) - if (eq(word, kp->kt_name)) - return kp->kt_val; - return -1; + for (kp = key_words; kp->kt_name != 0; kp++) + if (eq(word, kp->kt_name)) + return kp->kt_val; + return -1; } /* @@ -207,18 +207,18 @@ int octal(str) char *str; { - int num; + int num; - (void) sscanf(str, "%o", &num); - return num; + (void) sscanf(str, "%o", &num); + return num; } int hex(str) char *str; { - int num; + int num; - (void) sscanf(str+2, "%x", &num); - return num; + (void) sscanf(str+2, "%x", &num); + return num; } diff --git a/tools/kconfig/main.c b/tools/kconfig/main.c index 82569b0..99e83fc 100644 --- a/tools/kconfig/main.c +++ b/tools/kconfig/main.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -46,190 +46,188 @@ static char *PREFIX; * system given a description of the desired system. */ int main(argc, argv) - int argc; - char **argv; + int argc; + char **argv; { - extern char *optarg; - extern int optind; - struct stat buf; - int ch; - char *p; + extern char *optarg; + extern int optind; + struct stat buf; + int ch; + char *p; - while ((ch = getopt(argc, argv, "gp")) != EOF) - switch (ch) { - case 'g': - debugging++; - break; - case 'p': - profiling++; - break; - case '?': - default: - goto usage; - } - argc -= optind; - argv += optind; + while ((ch = getopt(argc, argv, "gp")) != EOF) + switch (ch) { + case 'g': + debugging++; + break; + case 'p': + profiling++; + break; + case '?': + default: + goto usage; + } + argc -= optind; + argv += optind; - if (argc != 1) { -usage: fputs("usage: config [-gp] sysname\n", stderr); - exit(1); - } + if (argc != 1) { +usage: fputs("usage: config [-gp] sysname\n", stderr); + exit(1); + } - if (freopen(PREFIX = *argv, "r", stdin) == NULL) { -fprintf(stderr, "--- PREFIX\n"); - perror(PREFIX); - exit(2); - } - mkdir("../../compile", 0777); - if (stat(p = path((char *)NULL), &buf)) { - if (mkdir(p, 0777)) { -fprintf(stderr, "--- mkdir path\n"); - perror(p); - exit(2); - } - } - else if ((buf.st_mode & S_IFMT) != S_IFDIR) { - fprintf(stderr, "config: %s isn't a directory.\n", p); - exit(2); - } + if (freopen(PREFIX = *argv, "r", stdin) == NULL) { + perror(PREFIX); + exit(2); + } + mkdir("../../compile", 0777); + if (stat(p = path((char *)NULL), &buf)) { + if (mkdir(p, 0777)) { + perror(p); + exit(2); + } + } + else if ((buf.st_mode & S_IFMT) != S_IFDIR) { + fprintf(stderr, "config: %s isn't a directory.\n", p); + exit(2); + } - dtab = NULL; - confp = &conf_list; - compp = &comp_list; - if (yyparse()) - exit(3); - switch (machine) { + dtab = NULL; + confp = &conf_list; + compp = &comp_list; + if (yyparse()) + exit(3); + switch (machine) { - case MACHINE_VAX: - vax_ioconf(); /* Print ioconf.c */ - ubglue(); /* Create ubglue.s */ - break; + case MACHINE_VAX: + vax_ioconf(); /* Print ioconf.c */ + ubglue(); /* Create ubglue.s */ + break; - case MACHINE_TAHOE: - tahoe_ioconf(); - vbglue(); - break; + case MACHINE_TAHOE: + tahoe_ioconf(); + vbglue(); + break; - case MACHINE_HP300: - case MACHINE_LUNA68K: - hp300_ioconf(); - hpglue(); - break; + case MACHINE_HP300: + case MACHINE_LUNA68K: + hp300_ioconf(); + hpglue(); + break; - case MACHINE_I386: - i386_ioconf(); /* Print ioconf.c */ - vector(); /* Create vector.s */ - break; + case MACHINE_I386: + i386_ioconf(); /* Print ioconf.c */ + vector(); /* Create vector.s */ + break; - case MACHINE_MIPS: - case MACHINE_PMAX: - pmax_ioconf(); - break; + case MACHINE_MIPS: + case MACHINE_PMAX: + pmax_ioconf(); + break; - case MACHINE_PIC32: - pic32_ioconf(); - break; + case MACHINE_PIC32: + pic32_ioconf(); + break; - case MACHINE_NEWS3400: - news_ioconf(); - break; + case MACHINE_NEWS3400: + news_ioconf(); + break; - default: - printf("Specify machine type, e.g. ``machine vax''\n"); - exit(1); - } - makefile(); /* build Makefile */ - headers(); /* make a lot of .h files */ - swapconf(); /* swap config files */ - printf("Don't forget to run \"make depend\"\n"); - exit(0); + default: + printf("Specify machine type, e.g. ``machine vax''\n"); + exit(1); + } + makefile(); /* build Makefile */ + headers(); /* make a lot of .h files */ + swapconf(); /* swap config files */ + printf("Don't forget to run \"make depend\"\n"); + exit(0); } /* * get_word - * returns EOF on end of file - * NULL on end of line - * pointer to the word otherwise + * returns EOF on end of file + * NULL on end of line + * pointer to the word otherwise */ char * get_word(fp) - register FILE *fp; + register FILE *fp; { - static char line[80]; - register int ch; - register char *cp; + static char line[80]; + register int ch; + register char *cp; - while ((ch = getc(fp)) != EOF) - if (ch != ' ' && ch != '\t') - break; - if (ch == EOF) - return ((char *)EOF); - if (ch == '\n') - return (NULL); - cp = line; - *cp++ = ch; - while ((ch = getc(fp)) != EOF) { - if (isspace(ch)) - break; - *cp++ = ch; - } - *cp = 0; - if (ch == EOF) - return ((char *)EOF); - (void) ungetc(ch, fp); - return (line); + while ((ch = getc(fp)) != EOF) + if (ch != ' ' && ch != '\t') + break; + if (ch == EOF) + return ((char *)EOF); + if (ch == '\n') + return (NULL); + cp = line; + *cp++ = ch; + while ((ch = getc(fp)) != EOF) { + if (isspace(ch)) + break; + *cp++ = ch; + } + *cp = 0; + if (ch == EOF) + return ((char *)EOF); + (void) ungetc(ch, fp); + return (line); } /* * get_quoted_word - * like get_word but will accept something in double or single quotes - * (to allow embedded spaces). + * like get_word but will accept something in double or single quotes + * (to allow embedded spaces). */ char * get_quoted_word(fp) - register FILE *fp; + register FILE *fp; { - static char line[256]; - register int ch; - register char *cp; + static char line[256]; + register int ch; + register char *cp; - while ((ch = getc(fp)) != EOF) - if (ch != ' ' && ch != '\t') - break; - if (ch == EOF) - return ((char *)EOF); - if (ch == '\n') - return (NULL); - cp = line; - if (ch == '"' || ch == '\'') { - register int quote = ch; + while ((ch = getc(fp)) != EOF) + if (ch != ' ' && ch != '\t') + break; + if (ch == EOF) + return ((char *)EOF); + if (ch == '\n') + return (NULL); + cp = line; + if (ch == '"' || ch == '\'') { + register int quote = ch; - while ((ch = getc(fp)) != EOF) { - if (ch == quote) - break; - if (ch == '\n') { - *cp = 0; - printf("config: missing quote reading `%s'\n", - line); - exit(2); - } - *cp++ = ch; - } - } else { - *cp++ = ch; - while ((ch = getc(fp)) != EOF) { - if (isspace(ch)) - break; - *cp++ = ch; - } - if (ch != EOF) - (void) ungetc(ch, fp); - } - *cp = 0; - if (ch == EOF) - return ((char *)EOF); - return (line); + while ((ch = getc(fp)) != EOF) { + if (ch == quote) + break; + if (ch == '\n') { + *cp = 0; + printf("config: missing quote reading `%s'\n", + line); + exit(2); + } + *cp++ = ch; + } + } else { + *cp++ = ch; + while ((ch = getc(fp)) != EOF) { + if (isspace(ch)) + break; + *cp++ = ch; + } + if (ch != EOF) + (void) ungetc(ch, fp); + } + *cp = 0; + if (ch == EOF) + return ((char *)EOF); + return (line); } /* @@ -237,18 +235,19 @@ get_quoted_word(fp) */ char * path(file) - char *file; + char *file; { - register char *cp; + register char *cp; -#define CDIR "../../compile/" - cp = malloc((unsigned int)(sizeof(CDIR) + strlen(PREFIX) + - (file ? strlen(file) : 0) + 2)); - (void) strcpy(cp, CDIR); - (void) strcat(cp, PREFIX); - if (file) { - (void) strcat(cp, "/"); - (void) strcat(cp, file); - } - return (cp); +#define CDIR "../../compile/" + + cp = malloc((unsigned int)(sizeof(CDIR) + strlen(PREFIX) + + (file ? strlen(file) : 0) + 2)); + (void) strcpy(cp, CDIR); + (void) strcat(cp, PREFIX); + if (file) { + (void) strcat(cp, "/"); + (void) strcat(cp, file); + } + return (cp); } diff --git a/tools/kconfig/mkglue.c b/tools/kconfig/mkglue.c index 81ab74f..7b1f308 100644 --- a/tools/kconfig/mkglue.c +++ b/tools/kconfig/mkglue.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -39,57 +39,57 @@ #include "y.tab.h" #include -static int cntcnt = 0; /* number of interrupt counters allocated */ +static int cntcnt = 0; /* number of interrupt counters allocated */ /* * Print a UNIBUS interrupt vector. */ void dump_ubavec(fp, vector, number) - register FILE *fp; - char *vector; - int number; + register FILE *fp; + char *vector; + int number; { - char nbuf[80]; - register char *v = nbuf; + char nbuf[80]; + register char *v = nbuf; - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", - v, v); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - if (strncmp(vector, "dzx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); - else if (strncmp(vector, "dpx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); - else if (strncmp(vector, "dpr", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); - else { - if (strncmp(vector, "uur", 3) == 0) { - fprintf(fp, "#ifdef UUDMA\n"); - fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); - fprintf(fp, "#endif\n"); - } - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); - } + (void) sprintf(v, "%s%d", vector, number); + fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", + v, v); + fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); + if (strncmp(vector, "dzx", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); + else if (strncmp(vector, "dpx", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); + else if (strncmp(vector, "dpr", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); + else { + if (strncmp(vector, "uur", 3) == 0) { + fprintf(fp, "#ifdef UUDMA\n"); + fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); + fprintf(fp, "#endif\n"); + } + fprintf(fp, "\tpushl\t$%d\n", number); + fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); + fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); + } } -static char *vaxinames[] = { - "clock", "cnr", "cnx", "tur", "tux", - "mba0", "mba1", "mba2", "mba3", - "uba0", "uba1", "uba2", "uba3" +static char *vaxinames[] = { + "clock", "cnr", "cnx", "tur", "tux", + "mba0", "mba1", "mba2", "mba3", + "uba0", "uba1", "uba2", "uba3" }; -static char *tahoeinames[] = { - "clock", "cnr", "cnx", "rmtr", "rmtx", "buserr", +static char *tahoeinames[] = { + "clock", "cnr", "cnx", "rmtr", "rmtx", "buserr", }; -static struct stdintrs { - char **si_names; /* list of standard interrupt names */ - int si_n; /* number of such names */ +static struct stdintrs { + char **si_names; /* list of standard interrupt names */ + int si_n; /* number of such names */ } stdintrs[] = { - { vaxinames, sizeof (vaxinames) / sizeof (vaxinames[0]) }, - { tahoeinames, (sizeof (tahoeinames) / sizeof (tahoeinames[0])) } + { vaxinames, sizeof (vaxinames) / sizeof (vaxinames[0]) }, + { tahoeinames, (sizeof (tahoeinames) / sizeof (tahoeinames[0])) } }; /* @@ -100,80 +100,80 @@ static struct stdintrs { * file which is prepended to locore.s. */ void dump_std(fp, gp) - register FILE *fp, *gp; + register FILE *fp, *gp; { - register struct stdintrs *si = &stdintrs[machine-1]; - register char **cpp; - register int i; + register struct stdintrs *si = &stdintrs[machine-1]; + register char **cpp; + register int i; - fprintf(fp, "\n\t.globl\t_intrnames\n"); - fprintf(fp, "\n\t.globl\t_eintrnames\n"); - fprintf(fp, "\t.data\n"); - fprintf(fp, "_intrnames:\n"); - cpp = si->si_names; - for (i = 0; i < si->si_n; i++) { - register char *cp, *tp; - char buf[80]; + fprintf(fp, "\n\t.globl\t_intrnames\n"); + fprintf(fp, "\n\t.globl\t_eintrnames\n"); + fprintf(fp, "\t.data\n"); + fprintf(fp, "_intrnames:\n"); + cpp = si->si_names; + for (i = 0; i < si->si_n; i++) { + register char *cp, *tp; + char buf[80]; - cp = *cpp; - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } - for (tp = buf; *cp; cp++) - if (islower(*cp)) - *tp++ = toupper(*cp); - else - *tp++ = *cp; - *tp = '\0'; - fprintf(gp, "#define\tI_%s\t%d\n", buf, i * (int)sizeof (long)); - fprintf(fp, "\t.asciz\t\"%s\"\n", *cpp); - cpp++; - } + cp = *cpp; + if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { + cp += 3; + if (*cp == 'r') + cp++; + } + for (tp = buf; *cp; cp++) + if (islower(*cp)) + *tp++ = toupper(*cp); + else + *tp++ = *cp; + *tp = '\0'; + fprintf(gp, "#define\tI_%s\t%d\n", buf, i * (int)sizeof (long)); + fprintf(fp, "\t.asciz\t\"%s\"\n", *cpp); + cpp++; + } } void dump_intname(fp, vector, number) - register FILE *fp; - char *vector; - int number; + register FILE *fp; + char *vector; + int number; { - register char *cp = vector; + register char *cp = vector; - fprintf(fp, "\t.asciz\t\""); - /* - * Skip any "int" or "intr" in the name. - */ - while (*cp) - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } else { - putc(*cp, fp); - cp++; - } - fprintf(fp, "%d\"\n", number); + fprintf(fp, "\t.asciz\t\""); + /* + * Skip any "int" or "intr" in the name. + */ + while (*cp) + if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { + cp += 3; + if (*cp == 'r') + cp++; + } else { + putc(*cp, fp); + cp++; + } + fprintf(fp, "%d\"\n", number); } /* * Reserve space for the interrupt counters. */ void dump_ctrs(fp) - register FILE *fp; + register FILE *fp; { - struct stdintrs *si = &stdintrs[machine-1]; + struct stdintrs *si = &stdintrs[machine-1]; - fprintf(fp, "_eintrnames:\n"); - fprintf(fp, "\n\t.globl\t_intrcnt\n"); - fprintf(fp, "\n\t.globl\t_eintrcnt\n"); - fprintf(fp, "\t.align 2\n"); - fprintf(fp, "_intrcnt:\n"); - fprintf(fp, "\t.space\t4 * %d\n", si->si_n); - fprintf(fp, "_fltintrcnt:\n"); - fprintf(fp, "\t.space\t4 * %d\n", cntcnt); - fprintf(fp, "_eintrcnt:\n\n"); - fprintf(fp, "\t.text\n"); + fprintf(fp, "_eintrnames:\n"); + fprintf(fp, "\n\t.globl\t_intrcnt\n"); + fprintf(fp, "\n\t.globl\t_eintrcnt\n"); + fprintf(fp, "\t.align 2\n"); + fprintf(fp, "_intrcnt:\n"); + fprintf(fp, "\t.space\t4 * %d\n", si->si_n); + fprintf(fp, "_fltintrcnt:\n"); + fprintf(fp, "\t.space\t4 * %d\n", cntcnt); + fprintf(fp, "_eintrcnt:\n\n"); + fprintf(fp, "\t.text\n"); } /* @@ -181,86 +181,86 @@ void dump_ctrs(fp) */ void ubglue() { - register FILE *fp, *gp; - register struct device *dp, *mp; + register FILE *fp, *gp; + register struct device *dp, *mp; - fp = fopen(path("ubglue.s"), "w"); - if (fp == 0) { - perror(path("ubglue.s")); - exit(1); - } - gp = fopen(path("ubvec.s"), "w"); - if (gp == 0) { - perror(path("ubvec.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; + fp = fopen(path("ubglue.s"), "w"); + if (fp == 0) { + perror(path("ubglue.s")); + exit(1); + } + gp = fopen(path("ubvec.s"), "w"); + if (gp == 0) { + perror(path("ubvec.s")); + exit(1); + } + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && mp != (struct device *)-1 && + !eq(mp->d_name, "mba")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_ubavec(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_std(fp, gp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + dump_ubavec(fp, id->id, + dp->d_unit); + break; + } + if (!strcmp(id->id, id2->id)) + break; + } + } + } + } + dump_std(fp, gp); + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && mp != (struct device *)-1 && + !eq(mp->d_name, "mba")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); - (void) fclose(gp); + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + dump_intname(fp, id->id, + dp->d_unit); + break; + } + if (!strcmp(id->id, id2->id)) + break; + } + } + } + } + dump_ctrs(fp); + (void) fclose(fp); + (void) fclose(gp); } /* * Print a VERSAbus interrupt vector */ void dump_vbavec(fp, vector, number) - register FILE *fp; - char *vector; - int number; + register FILE *fp; + char *vector; + int number; { - char nbuf[80]; - register char *v = nbuf; + char nbuf[80]; + register char *v = nbuf; - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "SCBVEC(%s):\n", v); - fprintf(fp, "\tCHECK_SFE(4)\n"); - fprintf(fp, "\tSAVE_FPSTAT(4)\n"); - fprintf(fp, "\tPUSHR\n"); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcallf\t$8,_%s\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n"); - fprintf(fp, "\tPOPR\n"); - fprintf(fp, "\tREST_FPSTAT\n"); - fprintf(fp, "\trei\n\n"); + (void) sprintf(v, "%s%d", vector, number); + fprintf(fp, "SCBVEC(%s):\n", v); + fprintf(fp, "\tCHECK_SFE(4)\n"); + fprintf(fp, "\tSAVE_FPSTAT(4)\n"); + fprintf(fp, "\tPUSHR\n"); + fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); + fprintf(fp, "\tpushl\t$%d\n", number); + fprintf(fp, "\tcallf\t$8,_%s\n", vector); + fprintf(fp, "\tincl\t_cnt+V_INTR\n"); + fprintf(fp, "\tPOPR\n"); + fprintf(fp, "\tREST_FPSTAT\n"); + fprintf(fp, "\trei\n\n"); } /* @@ -268,59 +268,59 @@ void dump_vbavec(fp, vector, number) */ void vbglue() { - register FILE *fp, *gp; - register struct device *dp, *mp; + register FILE *fp, *gp; + register struct device *dp, *mp; - fp = fopen(path("vbglue.s"), "w"); - if (fp == 0) { - perror(path("vbglue.s")); - exit(1); - } - gp = fopen(path("vbvec.s"), "w"); - if (gp == 0) { - perror(path("vbvec.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - struct idlst *id, *id2; + fp = fopen(path("vbglue.s"), "w"); + if (fp == 0) { + perror(path("vbglue.s")); + exit(1); + } + gp = fopen(path("vbvec.s"), "w"); + if (gp == 0) { + perror(path("vbvec.s")); + exit(1); + } + for (dp = dtab; dp != 0; dp = dp->d_next) { + struct idlst *id, *id2; - mp = dp->d_conn; - if (mp == 0 || mp == (struct device *)-1 || - eq(mp->d_name, "mba")) - continue; - for (id = dp->d_vec; id; id = id->id_next) - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id == id2) { - dump_vbavec(fp, id->id, dp->d_unit); - break; - } - if (eq(id->id, id2->id)) - break; - } - } - dump_std(fp, gp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; + mp = dp->d_conn; + if (mp == 0 || mp == (struct device *)-1 || + eq(mp->d_name, "mba")) + continue; + for (id = dp->d_vec; id; id = id->id_next) + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id == id2) { + dump_vbavec(fp, id->id, dp->d_unit); + break; + } + if (eq(id->id, id2->id)) + break; + } + } + dump_std(fp, gp); + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && mp != (struct device *)-1 && + !eq(mp->d_name, "mba")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (eq(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); - (void) fclose(gp); + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + dump_intname(fp, id->id, + dp->d_unit); + break; + } + if (eq(id->id, id2->id)) + break; + } + } + } + } + dump_ctrs(fp); + (void) fclose(fp); + (void) fclose(gp); } /* @@ -336,67 +336,67 @@ void hpglue() */ void vector() { - register FILE *fp; - register struct device *dp, *mp; - int count; + register FILE *fp; + register struct device *dp, *mp; + int count; - fp = fopen(path("vector.s"), "w"); - if (fp == 0) { - perror(path("vector.s")); - exit(1); - } - fprintf(fp,"\ + fp = fopen(path("vector.s"), "w"); + if (fp == 0) { + perror(path("vector.s")); + exit(1); + } + fprintf(fp,"\ /*\n\ * AT/386\n\ * Interrupt vector routines\n\ * Generated by config program\n\ */ \n\ \n\ -#include \"i386/isa/isa.h\"\n\ -#include \"i386/isa/icu.h\"\n\ +#include \"i386/isa/isa.h\"\n\ +#include \"i386/isa/icu.h\"\n\ \n\ -#define VEC(name) .align 4; .globl _V/**/name; _V/**/name:\n\n"); +#define VEC(name) .align 4; .globl _V/**/name; _V/**/name:\n\n"); - fprintf(fp,"\ - .globl _hardclock\n\ + fprintf(fp,"\ + .globl _hardclock\n\ VEC(clk)\n\ - INTR1(0, _highmask, 0)\n\ - call _hardclock \n\ - INTREXIT1\n\n\n"); + INTR1(0, _highmask, 0)\n\ + call _hardclock \n\ + INTREXIT1\n\n\n"); - count=0; - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && /* mp != (struct device *)-1 &&*/ - eq(mp->d_name, "isa")) { - struct idlst *id, *id2; + count=0; + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && /* mp != (struct device *)-1 &&*/ + eq(mp->d_name, "isa")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - if(dp->d_irq == -1) continue; - fprintf(fp,"\t.globl _%s, _%s%dmask\n\t.data\n", - id->id, dp->d_name, dp->d_unit); - fprintf(fp,"_%s%dmask:\t.long 0\n\t.text\n", - dp->d_name, dp->d_unit); - fprintf(fp,"VEC(%s%d)\n\tINTR%d(%d, ", - dp->d_name, dp->d_unit, - dp->d_irq / 8 + 1, dp->d_unit); - if(eq(dp->d_mask,"null")) - fprintf(fp,"_%s%dmask, ", - dp->d_name, dp->d_unit); - else - fprintf(fp,"_%smask, ", - dp->d_mask); - fprintf(fp,"%d)\n\tcall\t_%s\n\tINTREXIT%d\n\n\n", - ++count, id->id, (dp->d_irq > 7)?2:1); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - (void) fclose(fp); + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + if(dp->d_irq == -1) continue; + fprintf(fp,"\t.globl _%s, _%s%dmask\n\t.data\n", + id->id, dp->d_name, dp->d_unit); + fprintf(fp,"_%s%dmask:\t.long 0\n\t.text\n", + dp->d_name, dp->d_unit); + fprintf(fp,"VEC(%s%d)\n\tINTR%d(%d, ", + dp->d_name, dp->d_unit, + dp->d_irq / 8 + 1, dp->d_unit); + if(eq(dp->d_mask,"null")) + fprintf(fp,"_%s%dmask, ", + dp->d_name, dp->d_unit); + else + fprintf(fp,"_%smask, ", + dp->d_mask); + fprintf(fp,"%d)\n\tcall\t_%s\n\tINTREXIT%d\n\n\n", + ++count, id->id, (dp->d_irq > 7)?2:1); + break; + } + if (!strcmp(id->id, id2->id)) + break; + } + } + } + } + (void) fclose(fp); } diff --git a/tools/kconfig/mkheaders.c b/tools/kconfig/mkheaders.c index b86a481..3d12540 100644 --- a/tools/kconfig/mkheaders.c +++ b/tools/kconfig/mkheaders.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -41,82 +41,82 @@ #include "y.tab.h" void do_header(dev, hname, count) - char *dev, *hname; - int count; + char *dev, *hname; + int count; { - char *file, *name, *inw, *toheader(), *tomacro(); - struct file_list *fl, *fl_head, *tflp; - FILE *inf, *outf; - int inc, oldcount; + char *file, *name, *inw, *toheader(), *tomacro(); + struct file_list *fl, *fl_head, *tflp; + FILE *inf, *outf; + int inc, oldcount; - file = toheader(hname); - name = tomacro(dev); - inf = fopen(file, "r"); - oldcount = -1; - if (inf == 0) { - outf = fopen(file, "w"); - if (outf == 0) { - perror(file); - exit(1); - } - fprintf(outf, "#define %s %d\n", name, count); - (void) fclose(outf); - return; - } - fl_head = NULL; - for (;;) { - char *cp; - if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) - break; - if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) - break; - inw = ns(inw); - cp = get_word(inf); - if (cp == 0 || cp == (char *)EOF) - break; - inc = atoi(cp); - if (eq(inw, name)) { - oldcount = inc; - inc = count; - } - cp = get_word(inf); - if (cp == (char *)EOF) - break; - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = inw; - fl->f_type = inc; - fl->f_next = fl_head; - fl_head = fl; - } - (void) fclose(inf); - if (count == oldcount) { - for (fl = fl_head; fl != NULL; fl = tflp) { - tflp = fl->f_next; - free(fl); - } - return; - } - if (oldcount == -1) { - fl = (struct file_list *) malloc(sizeof *fl); - bzero(fl, sizeof(*fl)); - fl->f_fn = name; - fl->f_type = count; - fl->f_next = fl_head; - fl_head = fl; - } - outf = fopen(file, "w"); - if (outf == 0) { - perror(file); - exit(1); - } - for (fl = fl_head; fl != NULL; fl = tflp) { - fprintf(outf, - "#define %s %u\n", fl->f_fn, count ? fl->f_type : 0); - tflp = fl->f_next; - free(fl); - } - (void) fclose(outf); + file = toheader(hname); + name = tomacro(dev); + inf = fopen(file, "r"); + oldcount = -1; + if (inf == 0) { + outf = fopen(file, "w"); + if (outf == 0) { + perror(file); + exit(1); + } + fprintf(outf, "#define %s %d\n", name, count); + (void) fclose(outf); + return; + } + fl_head = NULL; + for (;;) { + char *cp; + if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) + break; + if ((inw = get_word(inf)) == 0 || inw == (char *)EOF) + break; + inw = ns(inw); + cp = get_word(inf); + if (cp == 0 || cp == (char *)EOF) + break; + inc = atoi(cp); + if (eq(inw, name)) { + oldcount = inc; + inc = count; + } + cp = get_word(inf); + if (cp == (char *)EOF) + break; + fl = (struct file_list *) malloc(sizeof *fl); + bzero(fl, sizeof(*fl)); + fl->f_fn = inw; + fl->f_type = inc; + fl->f_next = fl_head; + fl_head = fl; + } + (void) fclose(inf); + if (count == oldcount) { + for (fl = fl_head; fl != NULL; fl = tflp) { + tflp = fl->f_next; + free(fl); + } + return; + } + if (oldcount == -1) { + fl = (struct file_list *) malloc(sizeof *fl); + bzero(fl, sizeof(*fl)); + fl->f_fn = name; + fl->f_type = count; + fl->f_next = fl_head; + fl_head = fl; + } + outf = fopen(file, "w"); + if (outf == 0) { + perror(file); + exit(1); + } + for (fl = fl_head; fl != NULL; fl = tflp) { + fprintf(outf, + "#define %s %u\n", fl->f_fn, count ? fl->f_type : 0); + tflp = fl->f_next; + free(fl); + } + (void) fclose(outf); } /* @@ -124,51 +124,51 @@ void do_header(dev, hname, count) * whatever the device is connected to */ void do_count(dev, hname, search) - register char *dev, *hname; - int search; + register char *dev, *hname; + int search; { - register struct device *dp, *mp; - register int count, hicount; + register struct device *dp, *mp; + register int count, hicount; - /* - * After this loop, "count" will be the actual number of units, - * and "hicount" will be the highest unit declared. do_header() - * must use this higher of these values. - */ - for (hicount = count = 0, dp = dtab; dp != 0; dp = dp->d_next) - if (dp->d_unit != -1 && eq(dp->d_name, dev)) { - if (dp->d_type == PSEUDO_DEVICE) { - count = - dp->d_slave != UNKNOWN ? dp->d_slave : 1; - break; - } - count++; - /* - * Allow holes in unit numbering, - * assumption is unit numbering starts - * at zero. - */ - if (dp->d_unit + 1 > hicount) - hicount = dp->d_unit + 1; - if (search) { - mp = dp->d_conn; - if (mp != 0 && mp != TO_NEXUS && - mp->d_conn != 0 && mp->d_conn != TO_NEXUS) { - do_count(mp->d_name, hname, 0); - search = 0; - } - } - } - do_header(dev, hname, count > hicount ? count : hicount); + /* + * After this loop, "count" will be the actual number of units, + * and "hicount" will be the highest unit declared. do_header() + * must use this higher of these values. + */ + for (hicount = count = 0, dp = dtab; dp != 0; dp = dp->d_next) + if (dp->d_unit != -1 && eq(dp->d_name, dev)) { + if (dp->d_type == PSEUDO_DEVICE) { + count = + dp->d_slave != UNKNOWN ? dp->d_slave : 1; + break; + } + count++; + /* + * Allow holes in unit numbering, + * assumption is unit numbering starts + * at zero. + */ + if (dp->d_unit + 1 > hicount) + hicount = dp->d_unit + 1; + if (search) { + mp = dp->d_conn; + if (mp != 0 && mp != TO_NEXUS && + mp->d_conn != 0 && mp->d_conn != TO_NEXUS) { + do_count(mp->d_name, hname, 0); + search = 0; + } + } + } + do_header(dev, hname, count > hicount ? count : hicount); } void headers() { - register struct file_list *fl; + register struct file_list *fl; - for (fl = ftab; fl != 0; fl = fl->f_next) - if (fl->f_needs != 0) - do_count(fl->f_needs, fl->f_needs, 1); + for (fl = ftab; fl != 0; fl = fl->f_next) + if (fl->f_needs != 0) + do_count(fl->f_needs, fl->f_needs, 1); } /* @@ -176,28 +176,28 @@ void headers() */ char * toheader(dev) - char *dev; + char *dev; { - static char hbuf[80]; + static char hbuf[80]; - (void) strcpy(hbuf, path(dev)); - (void) strcat(hbuf, ".h"); - return (hbuf); + (void) strcpy(hbuf, path(dev)); + (void) strcat(hbuf, ".h"); + return (hbuf); } /* * convert a dev name to a macro name */ char *tomacro(dev) - register char *dev; + register char *dev; { - static char mbuf[20]; - register char *cp; + static char mbuf[20]; + register char *cp; - cp = mbuf; - *cp++ = 'N'; - while (*dev) - *cp++ = islower(*dev) ? toupper(*dev++) : *dev++; - *cp++ = 0; - return (mbuf); + cp = mbuf; + *cp++ = 'N'; + while (*dev) + *cp++ = islower(*dev) ? toupper(*dev++) : *dev++; + *cp++ = 0; + return (mbuf); } diff --git a/tools/kconfig/mkioconf.c b/tools/kconfig/mkioconf.c index ef77297..0642600 100644 --- a/tools/kconfig/mkioconf.c +++ b/tools/kconfig/mkioconf.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -38,427 +38,429 @@ /* * build the ioconf.c file */ -char *qu(); -char *intv(); -char *wnum(); -void pseudo_ioconf(); +char *qu(); +char *intv(); +char *wnum(); +void pseudo_ioconf(); #if MACHINE_VAX void vax_ioconf() { - register struct device *dp, *mp, *np; - register int uba_n, slave; - FILE *fp; + 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/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"); + 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/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_ioconf(fp); - (void) fclose(fp); + 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_ioconf(fp); + (void) fclose(fp); } #endif #if MACHINE_TAHOE void tahoe_ioconf() { - register struct device *dp, *mp, *np; - register int vba_n, slave; - FILE *fp; + 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/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_ioconf(fp); - (void) fclose(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/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_ioconf(fp); + (void) fclose(fp); } #endif @@ -468,130 +470,131 @@ void tahoe_ioconf() #define isscsidev(n) (eq(n,"sd") || eq(n,"st") || eq(n,"ac")) int hpbadslave(mp, dp) - register struct device *dp, *mp; + register struct device *dp, *mp; { - if ((mp == TO_NEXUS && ishpibdev(dp->d_name)) || - (mp != TO_NEXUS && eq(mp->d_name, "hpib") && - !ishpibdev(dp->d_name))) { - printf("%s%s must be attached to an hpib\n", - dp->d_name, wnum(dp->d_unit)); - return (1); - } - 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, wnum(dp->d_unit)); - return (1); - } - return (0); + if ((mp == TO_NEXUS && ishpibdev(dp->d_name)) || + (mp != TO_NEXUS && eq(mp->d_name, "hpib") && + !ishpibdev(dp->d_name))) { + printf("%s%s must be attached to an hpib\n", + dp->d_name, wnum(dp->d_unit)); + return (1); + } + 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, wnum(dp->d_unit)); + return (1); + } + return (0); } void hp300_ioconf() { - register struct device *dp, *mp; - register int hpib, slave; - FILE *fp; + register struct device *dp, *mp; + register int hpib, 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 \"sys/buf.h\"\n"); - fprintf(fp, "#include \"sys/map.h\"\n"); - fprintf(fp, "\n"); - if (machine == MACHINE_HP300) - fprintf(fp, "#include \"hp/dev/device.h\"\n\n"); - else - fprintf(fp, "#include \"luna68k/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 hpib 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 hp_ctlr hp_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 sc (nexus)\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; - } - 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 hp_device hp_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 || hpbadslave(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, wnum(dp->d_unit)); - continue; - } - slave = QUES; - hpib = QUES; - } else { - if (dp->d_addr != 0) { - printf("can't specify sc for device %s%s\n", - dp->d_name, wnum(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, wnum(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, wnum(dp->d_unit)); - continue; - } - slave = dp->d_slave; - } - hpib = 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, hpib, slave, - dp->d_addr, dp->d_dk, dp->d_flags); - } - fprintf(fp, "0\n};\n"); - pseudo_ioconf(fp); - (void) fclose(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 \"sys/buf.h\"\n"); + fprintf(fp, "#include \"sys/map.h\"\n"); + fprintf(fp, "\n"); + if (machine == MACHINE_HP300) + fprintf(fp, "#include \"hp/dev/device.h\"\n\n"); + else + fprintf(fp, "#include \"luna68k/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 hpib 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 hp_ctlr hp_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 sc (nexus)\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; + } + 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 hp_device hp_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 || hpbadslave(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, wnum(dp->d_unit)); + continue; + } + slave = QUES; + hpib = QUES; + } else { + if (dp->d_addr != 0) { + printf("can't specify sc for device %s%s\n", + dp->d_name, wnum(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, wnum(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, wnum(dp->d_unit)); + continue; + } + slave = dp->d_slave; + } + hpib = 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, hpib, slave, + dp->d_addr, dp->d_dk, dp->d_flags); + } + fprintf(fp, "0\n};\n"); + pseudo_ioconf(fp); + (void) fclose(fp); } #endif @@ -600,285 +603,285 @@ char *sirq(int); void i386_ioconf() { - register struct device *dp, *mp; - FILE *fp; + 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 program\n"); - fprintf(fp, " */\n\n"); - fprintf(fp, "#include \"machine/pte.h\"\n"); - fprintf(fp, "#include \"sys/param.h\"\n"); - fprintf(fp, "#include \"sys/buf.h\"\n"); - fprintf(fp, "#include \"sys/map.h\"\n"); - fprintf(fp, "\n"); - fprintf(fp, "#define V(s) __CONCAT(V,s)\n"); - fprintf(fp, "#define C (caddr_t)\n\n"); - /* - * First print the isa initialization structures - */ - if (seen_isa) { + 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 program\n"); + fprintf(fp, " */\n\n"); + fprintf(fp, "#include \"machine/pte.h\"\n"); + fprintf(fp, "#include \"sys/param.h\"\n"); + fprintf(fp, "#include \"sys/buf.h\"\n"); + fprintf(fp, "#include \"sys/map.h\"\n"); + fprintf(fp, "\n"); + fprintf(fp, "#define V(s) __CONCAT(V,s)\n"); + fprintf(fp, "#define C (caddr_t)\n\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"); + 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 || - !eq(mp->d_name, "isa")) - continue; - fprintf(fp, -"extern struct isa_driver %sdriver; extern V(%s%d)();\n", - dp->d_name, dp->d_name, dp->d_unit); - } - fprintf(fp, "\nstruct isa_device isa_devtab_bio[] = {\n"); - fprintf(fp, "\ -/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) - continue; - if (!eq(dp->d_mask, "bio")) continue; - if (dp->d_port) - fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); - else - fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); - fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", - sirq(dp->d_irq), dp->d_drq, dp->d_maddr, - dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); - } - fprintf(fp, "0\n};\n"); + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp == 0 || mp == TO_NEXUS || + !eq(mp->d_name, "isa")) + continue; + fprintf(fp, + "extern struct isa_driver %sdriver; extern V(%s%d)();\n", + dp->d_name, dp->d_name, dp->d_unit); + } + fprintf(fp, "\nstruct isa_device isa_devtab_bio[] = {\n"); + fprintf(fp, "\ +/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) + continue; + if (!eq(dp->d_mask, "bio")) continue; + if (dp->d_port) + fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); + else + fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); + fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", + sirq(dp->d_irq), dp->d_drq, dp->d_maddr, + dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); + } + fprintf(fp, "0\n};\n"); - fprintf(fp, "struct isa_device isa_devtab_tty[] = {\n"); - fprintf(fp, "\ -/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) - continue; - if (!eq(dp->d_mask, "tty")) continue; - if (dp->d_port) - fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); - else - fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); - fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", - sirq(dp->d_irq), dp->d_drq, dp->d_maddr, - dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); - } - fprintf(fp, "0\n};\n\n"); + fprintf(fp, "struct isa_device isa_devtab_tty[] = {\n"); + fprintf(fp, "\ +/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) + continue; + if (!eq(dp->d_mask, "tty")) continue; + if (dp->d_port) + fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); + else + fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); + fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", + sirq(dp->d_irq), dp->d_drq, dp->d_maddr, + dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); + } + fprintf(fp, "0\n};\n\n"); - fprintf(fp, "struct isa_device isa_devtab_net[] = {\n"); - fprintf(fp, "\ -/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) - continue; - if (!eq(dp->d_mask, "net")) continue; - if (dp->d_port) - fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); - else - fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); - fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", - sirq(dp->d_irq), dp->d_drq, dp->d_maddr, - dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); - } - fprintf(fp, "0\n};\n\n"); + fprintf(fp, "struct isa_device isa_devtab_net[] = {\n"); + fprintf(fp, "\ +/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) + continue; + if (!eq(dp->d_mask, "net")) continue; + if (dp->d_port) + fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); + else + fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); + fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", + sirq(dp->d_irq), dp->d_drq, dp->d_maddr, + dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); + } + fprintf(fp, "0\n};\n\n"); - fprintf(fp, "struct isa_device isa_devtab_null[] = {\n"); - fprintf(fp, "\ -/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) - continue; - if (!eq(dp->d_mask, "null")) continue; - if (dp->d_port) - fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); - else - fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); - fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", - sirq(dp->d_irq), dp->d_drq, dp->d_maddr, - dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); - } - fprintf(fp, "0\n};\n\n"); - } - pseudo_ioconf(fp); - (void) fclose(fp); + fprintf(fp, "struct isa_device isa_devtab_null[] = {\n"); + fprintf(fp, "\ +/* driver iobase irq drq maddr msiz intr unit */\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, "isa")) + continue; + if (!eq(dp->d_mask, "null")) continue; + if (dp->d_port) + fprintf(fp, "{ &%sdriver, %8.8s,", dp->d_name, dp->d_port); + else + fprintf(fp, "{ &%sdriver, 0x%03x,", dp->d_name, dp->d_portn); + fprintf(fp, " %5.5s, %2d, C 0x%05X, %5d, V(%s%d), %2d },\n", + sirq(dp->d_irq), dp->d_drq, dp->d_maddr, + dp->d_msize, dp->d_name, dp->d_unit, dp->d_unit); + } + fprintf(fp, "0\n};\n\n"); + } + pseudo_ioconf(fp); + (void) fclose(fp); } char * sirq(num) { - if (num == -1) - return ("0"); - sprintf(errbuf, "IRQ%d", num); - return (errbuf); + if (num == -1) + return ("0"); + sprintf(errbuf, "IRQ%d", num); + return (errbuf); } #endif #if MACHINE_PMAX void pmax_ioconf() { - register struct device *dp, *mp; - FILE *fp; + register struct device *dp, *mp; + FILE *fp; - fp = fopen(path("ioconf.c"), "w"); - if (fp == 0) { - perror(path("ioconf.c")); - exit(1); - } - fprintf(fp, "#include \"sys/types.h\"\n"); - fprintf(fp, "#include \"sys/time.h\"\n"); - fprintf(fp, "#include \"mips/dev/device.h\"\n\n"); - fprintf(fp, "#define C (char *)\n\n"); + fp = fopen(path("ioconf.c"), "w"); + if (fp == 0) { + perror(path("ioconf.c")); + exit(1); + } + fprintf(fp, "#include \"sys/types.h\"\n"); + fprintf(fp, "#include \"sys/time.h\"\n"); + fprintf(fp, "#include \"mips/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 mips_ctlr mips_cinit[] = {\n"); - fprintf(fp, "/*\tdriver,\t\tunit,\taddr,\t\tpri,\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,\t%d,\t0x%x },\n", - dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri, - dp->d_flags); - } - fprintf(fp, "\t0\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 mips_ctlr mips_cinit[] = {\n"); + fprintf(fp, "/*\tdriver,\t\tunit,\taddr,\t\tpri,\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,\t%d,\t0x%x },\n", + dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri, + 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 (asc or sii) 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_ioconf(fp); - (void) fclose(fp); + /* 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 (asc or sii) 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_ioconf(fp); + (void) fclose(fp); } #endif #if MACHINE_PIC32 void pic32_ioconf() { - register struct device *dp, *mp; - FILE *fp; + register struct device *dp, *mp; + FILE *fp; - fp = fopen(path("ioconf.c"), "w"); - if (fp == 0) { - perror(path("ioconf.c")); - exit(1); - } - fprintf(fp, "#include \"sys/types.h\"\n"); - fprintf(fp, "#include \"sys/time.h\"\n"); - fprintf(fp, "#include \"mips/dev/device.h\"\n\n"); - fprintf(fp, "#define C (char *)\n\n"); + fp = fopen(path("ioconf.c"), "w"); + if (fp == 0) { + perror(path("ioconf.c")); + exit(1); + } + fprintf(fp, "#include \"sys/types.h\"\n"); + fprintf(fp, "#include \"sys/time.h\"\n"); + fprintf(fp, "#include \"mips/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 conf_ctlr conf_cinit[] = {\n"); - fprintf(fp, "/*\tdriver,\t\tunit,\taddr,\t\tpri,\tflags */\n"); - for (dp = dtab; dp != 0; dp = dp->d_next) { - if (dp->d_type != CONTROLLER && dp->d_type != MASTER) - 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%08x,\t%d,\t0x%x },\n", - dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri, - dp->d_flags); - } - fprintf(fp, "\t{ 0 }\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 conf_ctlr conf_cinit[] = {\n"); + fprintf(fp, "/*\tdriver,\t\tunit,\taddr,\t\tpri,\tflags */\n"); + for (dp = dtab; dp != 0; dp = dp->d_next) { + if (dp->d_type != CONTROLLER && dp->d_type != MASTER) + 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%08x,\t%d,\t0x%x },\n", + dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri, + dp->d_flags); + } + fprintf(fp, "\t{ 0 }\n};\n"); - /* print devices connected to other controllers */ - fprintf(fp, "\nstruct conf_device conf_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; + /* print devices connected to other controllers */ + fprintf(fp, "\nstruct conf_device conf_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; - fprintf(fp, "{ &%sdriver,\t", dp->d_name); - if (mp) { - fprintf(fp, "&%sdriver,\t%d,\t%d,\t", - mp->d_name, dp->d_unit, mp->d_unit); - } else { - fprintf(fp, "0,\t\t%d,\t0,\t", - dp->d_unit); - } - fprintf(fp, "%d,\t%d,\t%d,\t0x%x },\n", - dp->d_drive, dp->d_slave, dp->d_dk, dp->d_flags); - } - fprintf(fp, "{ 0 }\n};\n"); - pseudo_ioconf(fp); - (void) fclose(fp); + mp = dp->d_conn; + fprintf(fp, "{ &%sdriver,\t", dp->d_name); + if (mp) { + fprintf(fp, "&%sdriver,\t%d,\t%d,\t", + mp->d_name, dp->d_unit, mp->d_unit); + } else { + fprintf(fp, "0,\t\t%d,\t0,\t", + dp->d_unit); + } + fprintf(fp, "%d,\t%d,\t%d,\t0x%x },\n", + dp->d_drive, dp->d_slave, dp->d_dk, dp->d_flags); + } + fprintf(fp, "{ 0 }\n};\n"); + pseudo_ioconf(fp); + (void) fclose(fp); } #endif @@ -889,261 +892,262 @@ int have_vme = 0; void news_ioconf() { - register struct device *dp, *mp; - register int slave; - FILE *fp; + register struct device *dp, *mp; + register int 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 \"sys/buf.h\"\n"); - fprintf(fp, "#include \"sys/map.h\"\n"); - fprintf(fp, "#include \"vm/vm.h\"\n"); - fprintf(fp, "#include \"iop.h\"\n"); - fprintf(fp, "#include \"hb.h\"\n"); - fprintf(fp, "\n"); - fprintf(fp, "#if NIOP > 0\n"); - fprintf(fp, "#include \"news3400/iop/iopvar.h\"\n"); - fprintf(fp, "#endif\n"); - fprintf(fp, "#if NHB > 0\n"); - fprintf(fp, "#include \"news3400/hbdev/hbvar.h\"\n"); - fprintf(fp, "#endif\n"); - fprintf(fp, "\n"); - fprintf(fp, "#define C (caddr_t)\n\n"); - fprintf(fp, "\n"); + 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, "#include \"sys/map.h\"\n"); + fprintf(fp, "#include \"vm/vm.h\"\n"); + fprintf(fp, "#include \"iop.h\"\n"); + fprintf(fp, "#include \"hb.h\"\n"); + fprintf(fp, "\n"); + fprintf(fp, "#if NIOP > 0\n"); + fprintf(fp, "#include \"news3400/iop/iopvar.h\"\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "#if NHB > 0\n"); + fprintf(fp, "#include \"news3400/hbdev/hbvar.h\"\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "\n"); + fprintf(fp, "#define C (caddr_t)\n\n"); + fprintf(fp, "\n"); -/* BEGIN HB */ - fprintf(fp, "#if NHB > 0\n"); - /* - * Now generate interrupt vectors for the HYPER-BUS - */ - for (dp = dtab; dp != 0; dp = dp->d_next) { - if (dp->d_pri >= 0) { - mp = dp->d_conn; - if (mp == 0 || mp == TO_NEXUS || - !eq(mp->d_name, "hb")) - continue; - fprintf(fp, "extern struct hb_driver %sdriver;\n", - dp->d_name); - have_hb++; - } - } - /* - * Now spew forth the hb_cinfo structure - */ - fprintf(fp, "\nstruct hb_ctlr hminit[] = {\n"); - fprintf(fp, "/*\t driver,\tctlr,\talive,\taddr,\tintpri */\n"); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if ((dp->d_type != MASTER && dp->d_type != CONTROLLER) - || mp == TO_NEXUS || mp == 0 || - !eq(mp->d_name, "hb")) - continue; - if (dp->d_pri < 0) { - printf("must specify priority 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; "); - printf("dont 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) don't have flags, " - "only devices do\n", - dp->d_name, dp->d_unit); - continue; - } - fprintf(fp, "\t{ &%sdriver,\t%d,\t0,\tC 0x%x,\t%d },\n", - dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri); - } - fprintf(fp, "\t0\n};\n"); - /* - * Now we go for the hb_device stuff - */ - fprintf(fp, "\nstruct hb_device hdinit[] = {\n"); - fprintf(fp, -"\t/* driver, unit, ctlr, slave, addr, pri, 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, "iop") || eq(mp->d_name, "vme")) - continue; - if (eq(mp->d_name, "hb")) { - if (dp->d_pri < 0) { - printf("must specify vector 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 only "); - printf("for controllers, not for device %s%d\n", - dp->d_name, dp->d_unit); - continue; - } - slave = QUES; - } else { - if (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; - } - if (dp->d_drive == UNKNOWN) { - printf("must specify ``drive number'' for %s%d\n", - dp->d_name, dp->d_unit); - continue; - } - /* NOTE THAT ON THE IOP ``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_pri >= 0) { - printf("interrupt priority 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, %2d, C 0x%x, %d, %d, 0x%x },\n", - eq(mp->d_name, "hb") ? dp->d_name : mp->d_name, dp->d_unit, - eq(mp->d_name, "hb") ? " -1" : qu(mp->d_unit), - slave, dp->d_addr, dp->d_pri, dp->d_dk, dp->d_flags); - } - fprintf(fp, "\t0\n};\n\n"); - fprintf(fp, "#endif\n\n"); -/* END HB */ - pseudo_ioconf(fp); - (void) fclose(fp); + /* BEGIN HB */ + fprintf(fp, "#if NHB > 0\n"); + /* + * Now generate interrupt vectors for the HYPER-BUS + */ + for (dp = dtab; dp != 0; dp = dp->d_next) { + if (dp->d_pri >= 0) { + mp = dp->d_conn; + if (mp == 0 || mp == TO_NEXUS || + !eq(mp->d_name, "hb")) + continue; + fprintf(fp, "extern struct hb_driver %sdriver;\n", + dp->d_name); + have_hb++; + } + } + /* + * Now spew forth the hb_cinfo structure + */ + fprintf(fp, "\nstruct hb_ctlr hminit[] = {\n"); + fprintf(fp, "/*\t driver,\tctlr,\talive,\taddr,\tintpri */\n"); + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if ((dp->d_type != MASTER && dp->d_type != CONTROLLER) + || mp == TO_NEXUS || mp == 0 || + !eq(mp->d_name, "hb")) + continue; + if (dp->d_pri < 0) { + printf("must specify priority 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; "); + printf("dont 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) don't have flags, " + "only devices do\n", + dp->d_name, dp->d_unit); + continue; + } + fprintf(fp, "\t{ &%sdriver,\t%d,\t0,\tC 0x%x,\t%d },\n", + dp->d_name, dp->d_unit, dp->d_addr, dp->d_pri); + } + fprintf(fp, "\t0\n};\n"); + /* + * Now we go for the hb_device stuff + */ + fprintf(fp, "\nstruct hb_device hdinit[] = {\n"); + fprintf(fp, + "\t/* driver, unit, ctlr, slave, addr, pri, 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, "iop") || eq(mp->d_name, "vme")) + continue; + if (eq(mp->d_name, "hb")) { + if (dp->d_pri < 0) { + printf("must specify vector 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 only "); + printf("for controllers, not for device %s%d\n", + dp->d_name, dp->d_unit); + continue; + } + slave = QUES; + } else { + if (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; + } + if (dp->d_drive == UNKNOWN) { + printf("must specify ``drive number'' for %s%d\n", + dp->d_name, dp->d_unit); + continue; + } + /* NOTE THAT ON THE IOP ``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_pri >= 0) { + printf("interrupt priority 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, %2d, C 0x%x, %d, %d, 0x%x },\n", + eq(mp->d_name, "hb") ? dp->d_name : mp->d_name, dp->d_unit, + eq(mp->d_name, "hb") ? " -1" : qu(mp->d_unit), + slave, dp->d_addr, dp->d_pri, dp->d_dk, dp->d_flags); + } + fprintf(fp, "\t0\n};\n\n"); + fprintf(fp, "#endif\n\n"); + /* END HB */ + + pseudo_ioconf(fp); + (void) fclose(fp); } #endif char * intv(dev) - register struct device *dev; + register struct device *dev; { - static char buf[20]; + static char buf[20]; - if (dev->d_vec == 0) - return (" 0"); - (void) sprintf(buf, "%sint%d", dev->d_name, dev->d_unit); - return (buf); + 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); + if (num == QUES) + return ("'?'"); + if (num == UNKNOWN) + return (" -1"); + (void) sprintf(errbuf, "%3d", num); + return (errbuf); } char * wnum(num) { - if (num == QUES || num == UNKNOWN) - return ("?"); - (void) sprintf(errbuf, "%d", num); - return (errbuf); + if (num == QUES || num == UNKNOWN) + return ("?"); + (void) sprintf(errbuf, "%d", num); + return (errbuf); } void comp_config(fp) - FILE *fp; + FILE *fp; { - register struct file_list *fl; - register struct device *dp; + register struct file_list *fl; + register struct device *dp; - fprintf(fp, "\n#include \"dev/cdvar.h\"\n"); - fprintf(fp, "\nstruct cddevice cddevice[] = {\n"); - fprintf(fp, "/*\tunit\tileave\tflags\tdk\tdevs\t\t\t\t*/\n"); + fprintf(fp, "\n#include \"dev/cdvar.h\"\n"); + fprintf(fp, "\nstruct cddevice cddevice[] = {\n"); + fprintf(fp, "/*\tunit\tileave\tflags\tdk\tdevs\t\t\t\t*/\n"); - fl = comp_list; - while (fl) { - if (fl->f_type != COMPDEVICE) { - fl = fl->f_next; - continue; - } - for (dp = dtab; dp != 0; dp = dp->d_next) - if (dp->d_type == DEVICE && - eq(dp->d_name, fl->f_fn) && - dp->d_unit == fl->f_compinfo) - break; - if (dp == 0) - continue; - fprintf(fp, "\t%d,\t%d,\t%d,\t%d,\t{", - dp->d_unit, dp->d_pri < 0 ? 0 : dp->d_pri, - dp->d_flags, 1); - for (fl = fl->f_next; fl->f_type == COMPSPEC; fl = fl->f_next) - fprintf(fp, " 0x%x,", (unsigned) fl->f_compdev); - fprintf(fp, " NODEV },\n"); - } - fprintf(fp, "\t-1,\t0,\t0,\t0,\t{ 0 },\n};\n"); + fl = comp_list; + while (fl) { + if (fl->f_type != COMPDEVICE) { + fl = fl->f_next; + continue; + } + for (dp = dtab; dp != 0; dp = dp->d_next) + if (dp->d_type == DEVICE && + eq(dp->d_name, fl->f_fn) && + dp->d_unit == fl->f_compinfo) + break; + if (dp == 0) + continue; + fprintf(fp, "\t%d,\t%d,\t%d,\t%d,\t{", + dp->d_unit, dp->d_pri < 0 ? 0 : dp->d_pri, + dp->d_flags, 1); + for (fl = fl->f_next; fl->f_type == COMPSPEC; fl = fl->f_next) + fprintf(fp, " 0x%x,", (unsigned) fl->f_compdev); + fprintf(fp, " NODEV },\n"); + } + fprintf(fp, "\t-1,\t0,\t0,\t0,\t{ 0 },\n};\n"); } void pseudo_ioconf(fp) - register FILE *fp; + register FILE *fp; { - register struct device *dp; + register struct device *dp; - (void)fprintf(fp, "\n#include \n\n"); - for (dp = dtab; dp != NULL; dp = dp->d_next) - if (dp->d_type == PSEUDO_DEVICE) - (void)fprintf(fp, "extern void %sattach __P((int));\n", - dp->d_name); - /* - * XXX concatonated disks are pseudo-devices but appear as DEVICEs - * since they don't adhere to normal pseudo-device conventions - * (i.e. one entry with total count in d_slave). - */ - if (seen_cd) - (void)fprintf(fp, "extern void cdattach __P((int));\n"); - /* XXX temporary for HP300, others */ - (void)fprintf(fp, "\n#include /* XXX */\n"); - (void)fprintf(fp, "#define etherattach (void (*)__P((int)))nullop\n"); - (void)fprintf(fp, "#define iteattach (void (*) __P((int)))nullop\n"); - (void)fprintf(fp, "\nstruct pdevinit pdevinit[] = {\n"); - for (dp = dtab; dp != NULL; dp = dp->d_next) - if (dp->d_type == PSEUDO_DEVICE) - (void)fprintf(fp, "\t{ %sattach, %d },\n", dp->d_name, - dp->d_slave > 0 ? dp->d_slave : 1); - /* - * XXX count up cds and put out an entry - */ - if (seen_cd) { - struct file_list *fl; - int cdmax = -1; + (void)fprintf(fp, "\n#include \n\n"); + for (dp = dtab; dp != NULL; dp = dp->d_next) + if (dp->d_type == PSEUDO_DEVICE) + (void)fprintf(fp, "extern void %sattach __P((int));\n", + dp->d_name); + /* + * XXX concatonated disks are pseudo-devices but appear as DEVICEs + * since they don't adhere to normal pseudo-device conventions + * (i.e. one entry with total count in d_slave). + */ + if (seen_cd) + (void)fprintf(fp, "extern void cdattach __P((int));\n"); + /* XXX temporary for HP300, others */ + (void)fprintf(fp, "\n#include /* XXX */\n"); + (void)fprintf(fp, "#define etherattach (void (*)__P((int)))nullop\n"); + (void)fprintf(fp, "#define iteattach (void (*) __P((int)))nullop\n"); + (void)fprintf(fp, "\nstruct pdevinit pdevinit[] = {\n"); + for (dp = dtab; dp != NULL; dp = dp->d_next) + if (dp->d_type == PSEUDO_DEVICE) + (void)fprintf(fp, "\t{ %sattach, %d },\n", dp->d_name, + dp->d_slave > 0 ? dp->d_slave : 1); + /* + * XXX count up cds and put out an entry + */ + if (seen_cd) { + struct file_list *fl; + int cdmax = -1; - for (fl = comp_list; fl != NULL; fl = fl->f_next) - if (fl->f_type == COMPDEVICE && fl->f_compinfo > cdmax) - cdmax = fl->f_compinfo; - (void)fprintf(fp, "\t{ cdattach, %d },\n", cdmax+1); - } - (void)fprintf(fp, "\t{ 0, 0 }\n};\n"); - if (seen_cd) - comp_config(fp); + for (fl = comp_list; fl != NULL; fl = fl->f_next) + if (fl->f_type == COMPDEVICE && fl->f_compinfo > cdmax) + cdmax = fl->f_compinfo; + (void)fprintf(fp, "\t{ cdattach, %d },\n", cdmax+1); + } + (void)fprintf(fp, "\t{ 0, 0 }\n};\n"); + if (seen_cd) + comp_config(fp); } diff --git a/tools/kconfig/mkmakefile.c b/tools/kconfig/mkmakefile.c index dc3f6d4..2f7da3a 100644 --- a/tools/kconfig/mkmakefile.c +++ b/tools/kconfig/mkmakefile.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1993, 19801990 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -43,21 +43,21 @@ #include "config.h" #define next_word(fp, wd) \ - { register char *word = get_word(fp); \ - if (word == (char *)EOF) \ - return; \ - else \ - wd = word; \ - } + { register char *word = get_word(fp); \ + if (word == (char *)EOF) \ + return; \ + else \ + wd = word; \ + } #define next_quoted_word(fp, wd) \ - { register char *word = get_quoted_word(fp); \ - if (word == (char *)EOF) \ - return; \ - else \ - wd = word; \ - } + { register char *word = get_quoted_word(fp); \ + if (word == (char *)EOF) \ + return; \ + else \ + wd = word; \ + } -static struct file_list *fcur; +static struct file_list *fcur; char *tail(); /* @@ -65,15 +65,15 @@ char *tail(); */ struct file_list * fl_lookup(file) - register char *file; + register char *file; { - register struct file_list *fp; + register struct file_list *fp; - for (fp = ftab ; fp != 0; fp = fp->f_next) { - if (eq(fp->f_fn, file)) - return (fp); - } - return (0); + for (fp = ftab ; fp != 0; fp = fp->f_next) { + if (eq(fp->f_fn, file)) + return (fp); + } + return (0); } /* @@ -81,15 +81,15 @@ fl_lookup(file) */ struct file_list * fltail_lookup(file) - register char *file; + register char *file; { - register struct file_list *fp; + register struct file_list *fp; - for (fp = ftab ; fp != 0; fp = fp->f_next) { - if (eq(tail(fp->f_fn), tail(file))) - return (fp); - } - return (0); + for (fp = ftab ; fp != 0; fp = fp->f_next) { + if (eq(tail(fp->f_fn), tail(file))) + return (fp); + } + return (0); } /* @@ -98,50 +98,50 @@ fltail_lookup(file) struct file_list * new_fent() { - register struct file_list *fp; + register struct file_list *fp; - fp = (struct file_list *) malloc(sizeof *fp); - bzero(fp, sizeof *fp); - if (fcur == 0) - fcur = ftab = fp; - else - fcur->f_next = fp; - fcur = fp; - return (fp); + fp = (struct file_list *) malloc(sizeof *fp); + bzero(fp, sizeof *fp); + if (fcur == 0) + fcur = ftab = fp; + else + fcur->f_next = fp; + fcur = fp; + return (fp); } -static struct users { - int u_default; - int u_min; - int u_max; +static struct users { + int u_default; + 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_MIPS */ - { 8, 2, 64 }, /* MACHINE_PMAX */ - { 8, 2, 64 }, /* MACHINE_LUNA68K */ - { 8, 2, 64 }, /* MACHINE_NEWS3400 */ - { 2, 1, 16 }, /* MACHINE_PIC32 */ + { 24, 8, 1024 }, /* MACHINE_VAX */ + { 4, 2, 128 }, /* MACHINE_TAHOE */ + { 8, 2, 64 }, /* MACHINE_HP300 */ + { 8, 2, 64 }, /* MACHINE_I386 */ + { 8, 2, 64 }, /* MACHINE_MIPS */ + { 8, 2, 64 }, /* MACHINE_PMAX */ + { 8, 2, 64 }, /* MACHINE_LUNA68K */ + { 8, 2, 64 }, /* MACHINE_NEWS3400 */ + { 2, 1, 16 }, /* MACHINE_PIC32 */ }; -#define NUSERS (sizeof (users) / sizeof (users[0])) +#define NUSERS (sizeof (users) / sizeof (users[0])) int opteq(cp, dp) - char *cp, *dp; + char *cp, *dp; { - char c, d; + char c, d; - for (; ; cp++, dp++) { - if (*cp != *dp) { - c = isupper(*cp) ? tolower(*cp) : *cp; - d = isupper(*dp) ? tolower(*dp) : *dp; - if (c != d) - return (0); - } - if (*cp == 0) - return (1); - } + for (; ; cp++, dp++) { + if (*cp != *dp) { + c = isupper(*cp) ? tolower(*cp) : *cp; + d = isupper(*dp) ? tolower(*dp) : *dp; + if (c != d) + return (0); + } + if (*cp == 0) + return (1); + } } /* @@ -150,246 +150,246 @@ int opteq(cp, dp) */ void read_files() { - FILE *fp; - register struct file_list *tp, *pf; - register struct device *dp; - struct device *save_dp = 0; - register struct opt *op; - char *wd, *this, *needs, *special; - char fname[32]; - int nreqs, first = 1, configdep, isdup, std, filetype; + FILE *fp; + register struct file_list *tp, *pf; + register struct device *dp; + struct device *save_dp = 0; + register struct opt *op; + char *wd, *this, *needs, *special; + char fname[32]; + int nreqs, first = 1, configdep, isdup, std, filetype; - ftab = 0; - (void) strcpy(fname, "../../conf/files"); + ftab = 0; + (void) strcpy(fname, "../../conf/files"); openit: - fp = fopen(fname, "r"); - if (fp == 0) { - perror(fname); - exit(1); - } + fp = fopen(fname, "r"); + if (fp == 0) { + perror(fname); + exit(1); + } next: - /* - * filename [ standard | optional ] [ config-dependent ] - * [ dev* | profiling-routine ] [ device-driver] - * [ compile-with "compile rule" ] - */ - wd = get_word(fp); - if (wd == (char *)EOF) { - (void) fclose(fp); - if (first == 1) { - (void) sprintf(fname, "files.%s", machinename); - first++; - goto openit; - } - if (first == 2) { - (void) sprintf(fname, "files.%s", raise(ident)); - first++; - fp = fopen(fname, "r"); - if (fp != 0) - goto next; - } - return; - } - if (wd == 0) - goto next; - this = ns(wd); - next_word(fp, wd); - if (wd == 0) { - printf("%s: No type for %s.\n", - fname, this); - exit(1); - } - if ((pf = fl_lookup(this)) && (pf->f_type != INVISIBLE || pf->f_flags)) - isdup = 1; - else - isdup = 0; - tp = 0; - if (first == 3 && (tp = fltail_lookup(this)) != 0) - printf("%s: Local file %s overrides %s.\n", - fname, this, tp->f_fn); - nreqs = 0; - special = 0; - configdep = 0; - needs = 0; - std = 0; - filetype = NORMAL; - if (eq(wd, "standard")) - std = 1; - else if (!eq(wd, "optional")) { - printf("%s: %s must be optional or standard\n", fname, this); - exit(1); - } + /* + * filename [ standard | optional ] [ config-dependent ] + * [ dev* | profiling-routine ] [ device-driver] + * [ compile-with "compile rule" ] + */ + wd = get_word(fp); + if (wd == (char *)EOF) { + (void) fclose(fp); + if (first == 1) { + (void) sprintf(fname, "files.%s", machinename); + first++; + goto openit; + } + if (first == 2) { + (void) sprintf(fname, "files.%s", raise(ident)); + first++; + fp = fopen(fname, "r"); + if (fp != 0) + goto next; + } + return; + } + if (wd == 0) + goto next; + this = ns(wd); + next_word(fp, wd); + if (wd == 0) { + printf("%s: No type for %s.\n", + fname, this); + exit(1); + } + if ((pf = fl_lookup(this)) && (pf->f_type != INVISIBLE || pf->f_flags)) + isdup = 1; + else + isdup = 0; + tp = 0; + if (first == 3 && (tp = fltail_lookup(this)) != 0) + printf("%s: Local file %s overrides %s.\n", + fname, this, tp->f_fn); + nreqs = 0; + special = 0; + configdep = 0; + needs = 0; + std = 0; + filetype = NORMAL; + if (eq(wd, "standard")) + std = 1; + else if (!eq(wd, "optional")) { + printf("%s: %s must be optional or standard\n", fname, this); + exit(1); + } nextparam: - next_word(fp, wd); - if (wd == 0) - goto doneparam; - if (eq(wd, "config-dependent")) { - configdep++; - goto nextparam; - } - if (eq(wd, "compile-with")) { - next_quoted_word(fp, wd); - if (wd == 0) { - printf("%s: missing compile command string.\n", - fname); - exit(1); - } - special = ns(wd); - goto nextparam; - } - nreqs++; - if (eq(wd, "device-driver")) { - filetype = DRIVER; - goto nextparam; - } - if (eq(wd, "profiling-routine")) { - filetype = PROFILING; - goto nextparam; - } - if (needs == 0 && nreqs == 1) - needs = ns(wd); - if (isdup) - goto invis; - for (dp = dtab; dp != 0; save_dp = dp, dp = dp->d_next) - if (eq(dp->d_name, wd)) { - if (std && dp->d_type == PSEUDO_DEVICE && - dp->d_slave <= 0) - dp->d_slave = 1; - goto nextparam; - } - if (std) { - dp = (struct device *) malloc(sizeof *dp); - init_dev(dp); - dp->d_name = ns(wd); - dp->d_type = PSEUDO_DEVICE; - dp->d_slave = 1; - if (save_dp) - save_dp->d_next = dp; - goto nextparam; - } - for (op = opt; op != 0; op = op->op_next) - if (op->op_value == 0 && opteq(op->op_name, wd)) { - if (nreqs == 1) { - free(needs); - needs = 0; - } - goto nextparam; - } + next_word(fp, wd); + if (wd == 0) + goto doneparam; + if (eq(wd, "config-dependent")) { + configdep++; + goto nextparam; + } + if (eq(wd, "compile-with")) { + next_quoted_word(fp, wd); + if (wd == 0) { + printf("%s: missing compile command string.\n", + fname); + exit(1); + } + special = ns(wd); + goto nextparam; + } + nreqs++; + if (eq(wd, "device-driver")) { + filetype = DRIVER; + goto nextparam; + } + if (eq(wd, "profiling-routine")) { + filetype = PROFILING; + goto nextparam; + } + if (needs == 0 && nreqs == 1) + needs = ns(wd); + if (isdup) + goto invis; + for (dp = dtab; dp != 0; save_dp = dp, dp = dp->d_next) + if (eq(dp->d_name, wd)) { + if (std && dp->d_type == PSEUDO_DEVICE && + dp->d_slave <= 0) + dp->d_slave = 1; + goto nextparam; + } + if (std) { + dp = (struct device *) malloc(sizeof *dp); + init_dev(dp); + dp->d_name = ns(wd); + dp->d_type = PSEUDO_DEVICE; + dp->d_slave = 1; + if (save_dp) + save_dp->d_next = dp; + goto nextparam; + } + for (op = opt; op != 0; op = op->op_next) + if (op->op_value == 0 && opteq(op->op_name, wd)) { + if (nreqs == 1) { + free(needs); + needs = 0; + } + goto nextparam; + } invis: - while ((wd = get_word(fp)) != 0) - ; - if (tp == 0) - tp = new_fent(); - tp->f_fn = this; - tp->f_type = INVISIBLE; - tp->f_needs = needs; - tp->f_flags = isdup; - tp->f_special = special; - goto next; + while ((wd = get_word(fp)) != 0) + ; + if (tp == 0) + tp = new_fent(); + tp->f_fn = this; + tp->f_type = INVISIBLE; + tp->f_needs = needs; + tp->f_flags = isdup; + tp->f_special = special; + goto next; doneparam: - if (std == 0 && nreqs == 0) { - printf("%s: what is %s optional on?\n", - fname, this); - exit(1); - } + if (std == 0 && nreqs == 0) { + printf("%s: what is %s optional on?\n", + fname, this); + exit(1); + } - if (wd) { - printf("%s: syntax error describing %s\n", - fname, this); - exit(1); - } - if (filetype == PROFILING && profiling == 0) - goto next; - if (tp == 0) - tp = new_fent(); - tp->f_fn = this; - tp->f_type = filetype; - tp->f_flags = 0; - if (configdep) - tp->f_flags |= CONFIGDEP; - tp->f_needs = needs; - tp->f_special = special; - if (pf && pf->f_type == INVISIBLE) - pf->f_flags = 1; /* mark as duplicate */ - goto next; + if (wd) { + printf("%s: syntax error describing %s\n", + fname, this); + exit(1); + } + if (filetype == PROFILING && profiling == 0) + goto next; + if (tp == 0) + tp = new_fent(); + tp->f_fn = this; + tp->f_type = filetype; + tp->f_flags = 0; + if (configdep) + tp->f_flags |= CONFIGDEP; + tp->f_needs = needs; + tp->f_special = special; + if (pf && pf->f_type == INVISIBLE) + pf->f_flags = 1; /* mark as duplicate */ + goto next; } void do_objs(fp) - FILE *fp; + FILE *fp; { - register struct file_list *tp, *fl; - register int lpos, len; - register char *cp, och, *sp; - char swapname[32]; + register struct file_list *tp, *fl; + register int lpos, len; + register char *cp, och, *sp; + char swapname[32]; - fprintf(fp, "OBJS="); - lpos = 6; - for (tp = ftab; tp != 0; tp = tp->f_next) { - if (tp->f_type == INVISIBLE) - continue; - sp = tail(tp->f_fn); - for (fl = conf_list; fl; fl = fl->f_next) { - if (fl->f_type != SWAPSPEC) - continue; - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - if (eq(sp, swapname)) - goto cont; - } - cp = sp + (len = strlen(sp)) - 1; - och = *cp; - *cp = 'o'; - if (len + lpos > 72) { - lpos = 8; - fprintf(fp, "\\\n\t"); - } - fprintf(fp, "%s ", sp); - lpos += len + 1; - *cp = och; + fprintf(fp, "OBJS="); + lpos = 6; + for (tp = ftab; tp != 0; tp = tp->f_next) { + if (tp->f_type == INVISIBLE) + continue; + sp = tail(tp->f_fn); + for (fl = conf_list; fl; fl = fl->f_next) { + if (fl->f_type != SWAPSPEC) + continue; + (void) sprintf(swapname, "swap%s.c", fl->f_fn); + if (eq(sp, swapname)) + goto cont; + } + cp = sp + (len = strlen(sp)) - 1; + och = *cp; + *cp = 'o'; + if (len + lpos > 72) { + lpos = 8; + fprintf(fp, "\\\n\t"); + } + fprintf(fp, "%s ", sp); + lpos += len + 1; + *cp = och; cont: - ; - } - if (lpos != 8) - putc('\n', fp); + ; + } + if (lpos != 8) + putc('\n', fp); } void do_cfiles(fp) - FILE *fp; + FILE *fp; { - register struct file_list *tp, *fl; - register int lpos, len; - char swapname[32]; + register struct file_list *tp, *fl; + register int lpos, len; + char swapname[32]; - fputs("CFILES=", fp); - lpos = 8; - for (tp = ftab; tp; tp = tp->f_next) - if (tp->f_type != INVISIBLE) { - len = strlen(tp->f_fn); - if (tp->f_fn[len - 1] != 'c') - continue; - if ((len = 3 + len) + lpos > 72) { - lpos = 8; - fputs("\\\n\t", fp); - } - fprintf(fp, "$S/%s ", tp->f_fn); - lpos += len + 1; - } - for (fl = conf_list; fl; fl = fl->f_next) - if (fl->f_type == SYSTEMSPEC) { - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - if ((len = 3 + strlen(swapname)) + lpos > 72) { - lpos = 8; - fputs("\\\n\t", fp); - } - if (eq(fl->f_fn, "generic")) - fprintf(fp, "$A/%s/%s ", - machinename, swapname); - else - fprintf(fp, "%s ", swapname); - lpos += len + 1; - } - if (lpos != 8) - putc('\n', fp); + fputs("CFILES=", fp); + lpos = 8; + for (tp = ftab; tp; tp = tp->f_next) + if (tp->f_type != INVISIBLE) { + len = strlen(tp->f_fn); + if (tp->f_fn[len - 1] != 'c') + continue; + if ((len = 3 + len) + lpos > 72) { + lpos = 8; + fputs("\\\n\t", fp); + } + fprintf(fp, "$S/%s ", tp->f_fn); + lpos += len + 1; + } + for (fl = conf_list; fl; fl = fl->f_next) + if (fl->f_type == SYSTEMSPEC) { + (void) sprintf(swapname, "swap%s.c", fl->f_fn); + if ((len = 3 + strlen(swapname)) + lpos > 72) { + lpos = 8; + fputs("\\\n\t", fp); + } + if (eq(fl->f_fn, "generic")) + fprintf(fp, "$A/%s/%s ", + machinename, swapname); + else + fprintf(fp, "%s ", swapname); + lpos += len + 1; + } + if (lpos != 8) + putc('\n', fp); } /* @@ -400,75 +400,75 @@ void do_cfiles(fp) * (e.g. for the VAX); assembler files are processed by as. */ void do_rules(f) - FILE *f; + FILE *f; { - register char *cp, *np, och; - register struct file_list *ftp; - char *special; + register char *cp, *np, och; + register struct file_list *ftp; + char *special; - for (ftp = ftab; ftp != 0; ftp = ftp->f_next) { - if (ftp->f_type == INVISIBLE) - continue; - cp = (np = ftp->f_fn) + strlen(ftp->f_fn) - 1; - och = *cp; - *cp = '\0'; - if (och == 'o') { - fprintf(f, "%so:\n\t-cp $S/%so .\n\n", tail(np), np); - continue; - } - fprintf(f, "%so: $S/%s%c\n", tail(np), np, och); - special = ftp->f_special; - if (special == 0) { - char *ftype; - static char cmd[128]; + for (ftp = ftab; ftp != 0; ftp = ftp->f_next) { + if (ftp->f_type == INVISIBLE) + continue; + cp = (np = ftp->f_fn) + strlen(ftp->f_fn) - 1; + och = *cp; + *cp = '\0'; + if (och == 'o') { + fprintf(f, "%so:\n\t-cp $S/%so .\n\n", tail(np), np); + continue; + } + fprintf(f, "%so: $S/%s%c\n", tail(np), np, och); + special = ftp->f_special; + if (special == 0) { + char *ftype; + static char cmd[128]; - switch (ftp->f_type) { + switch (ftp->f_type) { - case NORMAL: - ftype = "NORMAL"; - break; + case NORMAL: + ftype = "NORMAL"; + break; - case DRIVER: - ftype = "DRIVER"; - break; + case DRIVER: + ftype = "DRIVER"; + break; - case PROFILING: - if (!profiling) - continue; - ftype = "PROFILE"; - break; + case PROFILING: + if (!profiling) + continue; + ftype = "PROFILE"; + break; - default: - printf("config: don't know rules for %s\n", np); - break; - } - (void)sprintf(cmd, "${%s_%c%s}", ftype, toupper(och), - ftp->f_flags & CONFIGDEP? "_C" : ""); - special = cmd; - } - *cp = och; - fprintf(f, "\t%s\n\n", special); - } + default: + printf("config: don't know rules for %s\n", np); + break; + } + (void)sprintf(cmd, "${%s_%c%s}", ftype, toupper(och), + ftp->f_flags & CONFIGDEP? "_C" : ""); + special = cmd; + } + *cp = och; + fprintf(f, "\t%s\n\n", special); + } } /* * Create the load strings */ void do_load(f) - register FILE *f; + register FILE *f; { - register struct file_list *fl; - register int first; - struct file_list *do_systemspec(); + register struct file_list *fl; + register int first; + struct file_list *do_systemspec(); - for (first = 1, fl = conf_list; fl; first = 0) - fl = fl->f_type == SYSTEMSPEC ? - do_systemspec(f, fl, first) : fl->f_next; - fputs("all:", f); - for (fl = conf_list; fl; fl = fl->f_next) - if (fl->f_type == SYSTEMSPEC) - fprintf(f, " %s.elf", fl->f_needs); - putc('\n', f); + for (first = 1, fl = conf_list; fl; first = 0) + fl = fl->f_type == SYSTEMSPEC ? + do_systemspec(f, fl, first) : fl->f_next; + fputs("all:", f); + for (fl = conf_list; fl; fl = fl->f_next) + if (fl->f_type == SYSTEMSPEC) + fprintf(f, " %s.elf", fl->f_needs); + putc('\n', f); } /* @@ -476,148 +476,148 @@ void do_load(f) */ void makefile() { - FILE *ifp, *ofp; - char line[BUFSIZ]; - struct opt *op; - struct users *up; + FILE *ifp, *ofp; + char line[BUFSIZ]; + struct opt *op; + struct users *up; - read_files(); - strcpy(line, "Makefile."); - (void) strcat(line, machinename); - ifp = fopen(line, "r"); - if (ifp == 0) { - perror(line); - exit(1); - } - ofp = fopen(path("Makefile"), "w"); - if (ofp == 0) { - perror(path("Makefile")); - exit(1); - } - fprintf(ofp, "IDENT=-D%s", raise(ident)); - if (profiling) - fprintf(ofp, " -DGPROF"); - if (cputype == 0) { - printf("cpu type must be specified\n"); - exit(1); - } - { struct cputype *cp; - for (cp = cputype; cp; cp = cp->cpu_next) - fprintf(ofp, " -D%s", cp->cpu_name); - } - for (op = opt; op; op = op->op_next) - if (op->op_value) - fprintf(ofp, " -D%s=\"%s\"", op->op_name, op->op_value); - else - fprintf(ofp, " -D%s", op->op_name); - fprintf(ofp, "\n"); - if (ldscript) - fprintf(ofp, "LDSCRIPT=\"%s\"\n", ldscript); - if (hadtz == 0) - 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]; - } else - up = &users[machine-1]; - if (maxusers == 0) { - printf("maxusers not specified; %d assumed\n", up->u_default); - maxusers = up->u_default; - } else if (maxusers < up->u_min) { - printf("minimum of %d maxusers assumed\n", up->u_min); - maxusers = up->u_min; - } else if (maxusers > up->u_max) - printf("warning: maxusers > %d (%d)\n", up->u_max, maxusers); - fprintf(ofp, "PARAM=-DTIMEZONE=%d -DDST=%d -DMAXUSERS=%d", - zone, dst, maxusers); - if (hz > 0) - fprintf(ofp, " -DHZ=%d", hz); - fprintf(ofp, "\n"); - for (op = mkopt; op; op = op->op_next) - fprintf(ofp, "%s=%s\n", op->op_name, op->op_value); - if (debugging) - fprintf(ofp, "DEBUG=-g\n"); - if (profiling) - fprintf(ofp, "PROF=-pg\n"); - while (fgets(line, BUFSIZ, ifp) != 0) { - if (*line != '%') { - fprintf(ofp, "%s", line); - continue; - } - if (eq(line, "%OBJS\n")) - do_objs(ofp); - else if (eq(line, "%CFILES\n")) - do_cfiles(ofp); - else if (eq(line, "%RULES\n")) - do_rules(ofp); - else if (eq(line, "%LOAD\n")) - do_load(ofp); - else - fprintf(stderr, - "Unknown %% construct in generic makefile: %s", - line); - } - (void) fclose(ifp); - (void) fclose(ofp); + read_files(); + strcpy(line, "Makefile."); + (void) strcat(line, machinename); + ifp = fopen(line, "r"); + if (ifp == 0) { + perror(line); + exit(1); + } + ofp = fopen(path("Makefile"), "w"); + if (ofp == 0) { + perror(path("Makefile")); + exit(1); + } + fprintf(ofp, "IDENT=-D%s", raise(ident)); + if (profiling) + fprintf(ofp, " -DGPROF"); + if (cputype == 0) { + printf("cpu type must be specified\n"); + exit(1); + } + { struct cputype *cp; + for (cp = cputype; cp; cp = cp->cpu_next) + fprintf(ofp, " -D%s", cp->cpu_name); + } + for (op = opt; op; op = op->op_next) + if (op->op_value) + fprintf(ofp, " -D%s=\"%s\"", op->op_name, op->op_value); + else + fprintf(ofp, " -D%s", op->op_name); + fprintf(ofp, "\n"); + if (ldscript) + fprintf(ofp, "LDSCRIPT=\"%s\"\n", ldscript); + if (hadtz == 0) + 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]; + } else + up = &users[machine-1]; + if (maxusers == 0) { + printf("maxusers not specified; %d assumed\n", up->u_default); + maxusers = up->u_default; + } else if (maxusers < up->u_min) { + printf("minimum of %d maxusers assumed\n", up->u_min); + maxusers = up->u_min; + } else if (maxusers > up->u_max) + printf("warning: maxusers > %d (%d)\n", up->u_max, maxusers); + fprintf(ofp, "PARAM=-DTIMEZONE=%d -DDST=%d -DMAXUSERS=%d", + zone, dst, maxusers); + if (hz > 0) + fprintf(ofp, " -DHZ=%d", hz); + fprintf(ofp, "\n"); + for (op = mkopt; op; op = op->op_next) + fprintf(ofp, "%s=%s\n", op->op_name, op->op_value); + if (debugging) + fprintf(ofp, "DEBUG=-g\n"); + if (profiling) + fprintf(ofp, "PROF=-pg\n"); + while (fgets(line, BUFSIZ, ifp) != 0) { + if (*line != '%') { + fprintf(ofp, "%s", line); + continue; + } + if (eq(line, "%OBJS\n")) + do_objs(ofp); + else if (eq(line, "%CFILES\n")) + do_cfiles(ofp); + else if (eq(line, "%RULES\n")) + do_rules(ofp); + else if (eq(line, "%LOAD\n")) + do_load(ofp); + else + fprintf(stderr, + "Unknown %% construct in generic makefile: %s", + line); + } + (void) fclose(ifp); + (void) fclose(ofp); } char * tail(fn) - char *fn; + char *fn; { - register char *cp; + register char *cp; - cp = rindex(fn, '/'); - if (cp == 0) - return (fn); - return (cp+1); + cp = rindex(fn, '/'); + if (cp == 0) + return (fn); + return (cp+1); } void do_swapspec(f, name) - FILE *f; - register char *name; + FILE *f; + register char *name; { - if (!eq(name, "generic")) - fprintf(f, "swap%s.o: swap%s.c\n", name, name); - else - fprintf(f, "swapgeneric.o: $A/%s/swapgeneric.c\n", - machinename); - fprintf(f, "\t${NORMAL_C}\n\n"); + if (!eq(name, "generic")) + fprintf(f, "swap%s.o: swap%s.c\n", name, name); + else + fprintf(f, "swapgeneric.o: $A/%s/swapgeneric.c\n", + machinename); + fprintf(f, "\t${NORMAL_C}\n\n"); } struct file_list * do_systemspec(f, fl, first) - FILE *f; - register struct file_list *fl; - int first; + FILE *f; + register struct file_list *fl; + int first; { - fprintf(f, "%s.elf: ${SYSTEM_DEP} swap%s.o", fl->f_needs, fl->f_fn); - // Don't use newvers target. - // A preferred way is to run newvers.sh from SYSTEM_LD_HEAD macro. - //if (first) - // fprintf(f, " newvers"); - fprintf(f, "\n\t${SYSTEM_LD_HEAD}\n"); - fprintf(f, "\t${SYSTEM_LD} swap%s.o\n", fl->f_fn); - fprintf(f, "\t${SYSTEM_LD_TAIL}\n\n"); - do_swapspec(f, fl->f_fn); - for (fl = fl->f_next; fl; fl = fl->f_next) - if (fl->f_type != SWAPSPEC) - break; - return (fl); + fprintf(f, "%s.elf: ${SYSTEM_DEP} swap%s.o", fl->f_needs, fl->f_fn); + // Don't use newvers target. + // A preferred way is to run newvers.sh from SYSTEM_LD_HEAD macro. + //if (first) + // fprintf(f, " newvers"); + fprintf(f, "\n\t${SYSTEM_LD_HEAD}\n"); + fprintf(f, "\t${SYSTEM_LD} swap%s.o\n", fl->f_fn); + fprintf(f, "\t${SYSTEM_LD_TAIL}\n\n"); + do_swapspec(f, fl->f_fn); + for (fl = fl->f_next; fl; fl = fl->f_next) + if (fl->f_type != SWAPSPEC) + break; + return (fl); } char * raise(str) - register char *str; + register char *str; { - register char *cp = str; + register char *cp = str; - while (*str) { - if (islower(*str)) - *str = toupper(*str); - str++; - } - return (cp); + while (*str) { + if (islower(*str)) + *str = toupper(*str); + str++; + } + return (cp); } diff --git a/tools/kconfig/mkswapconf.c b/tools/kconfig/mkswapconf.c index 89bb92d..dd5fa14 100644 --- a/tools/kconfig/mkswapconf.c +++ b/tools/kconfig/mkswapconf.c @@ -1,6 +1,6 @@ /* * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -42,172 +42,174 @@ void swapconf() { - register struct file_list *fl; - struct file_list *do_swap(); + register struct file_list *fl; + struct file_list *do_swap(); - fl = conf_list; - while (fl) { - if (fl->f_type != SYSTEMSPEC) { - fl = fl->f_next; - continue; - } - fl = do_swap(fl); - } + fl = conf_list; + while (fl) { + if (fl->f_type != SYSTEMSPEC) { + fl = fl->f_next; + continue; + } + fl = do_swap(fl); + } } struct file_list * do_swap(fl) - register struct file_list *fl; + register struct file_list *fl; { - FILE *fp; - char swapname[80]; - register struct file_list *swap; - dev_t dev; + FILE *fp; + char swapname[80]; + register struct file_list *swap; + dev_t dev; - if (eq(fl->f_fn, "generic")) { - fl = fl->f_next; - return (fl->f_next); - } - (void) sprintf(swapname, "swap%s.c", fl->f_fn); - fp = fopen(path(swapname), "w"); - if (fp == 0) { - perror(path(swapname)); - exit(1); - } - fprintf(fp, "#include \"sys/param.h\"\n"); - fprintf(fp, "#include \"sys/conf.h\"\n"); - fprintf(fp, "\n"); - /* - * If there aren't any swap devices - * specified, just return, the error - * has already been noted. - */ - swap = fl->f_next; - if (swap == 0 || swap->f_type != SWAPSPEC) { - (void) unlink(path(swapname)); - fclose(fp); - return (swap); - } - fprintf(fp, "dev_t\trootdev = makedev(%d, %d);\n", - major(fl->f_rootdev), minor(fl->f_rootdev)); - fprintf(fp, "dev_t\tdumpdev = makedev(%d, %d);\n", - major(fl->f_dumpdev), minor(fl->f_dumpdev)); - fprintf(fp, "\n"); - fprintf(fp, "struct\tswdevt swdevt[] = {\n"); - do { - dev = swap->f_swapdev; - fprintf(fp, "\t{ makedev(%d, %d),\t%d,\t%d },\t/* %s */\n", - major(dev), minor(dev), swap->f_swapflag, - swap->f_swapsize, swap->f_fn); - swap = swap->f_next; - } while (swap && swap->f_type == SWAPSPEC); - fprintf(fp, "\t{ NODEV, 0, 0 }\n"); - fprintf(fp, "};\n"); - fclose(fp); - return (swap); + if (eq(fl->f_fn, "generic")) { + fl = fl->f_next; + return (fl->f_next); + } + (void) sprintf(swapname, "swap%s.c", fl->f_fn); + fp = fopen(path(swapname), "w"); + if (fp == 0) { + perror(path(swapname)); + exit(1); + } + fprintf(fp, "#include \"sys/param.h\"\n"); + fprintf(fp, "#include \"sys/conf.h\"\n"); + fprintf(fp, "\n"); + /* + * If there aren't any swap devices + * specified, just return, the error + * has already been noted. + */ + swap = fl->f_next; + if (swap == 0 || swap->f_type != SWAPSPEC) { + (void) unlink(path(swapname)); + fclose(fp); + return (swap); + } + fprintf(fp, "dev_t\trootdev = makedev(%d, %d);\n", + major(fl->f_rootdev), minor(fl->f_rootdev)); + fprintf(fp, "dev_t\tdumpdev = makedev(%d, %d);\n", + major(fl->f_dumpdev), minor(fl->f_dumpdev)); + fprintf(fp, "\n"); + fprintf(fp, "struct\tswdevt swdevt[] = {\n"); + do { + dev = swap->f_swapdev; + fprintf(fp, "\t{ makedev(%d, %d),\t%d,\t%d },\t/* %s */\n", + major(dev), minor(dev), swap->f_swapflag, + swap->f_swapsize, swap->f_fn); + swap = swap->f_next; + } while (swap && swap->f_type == SWAPSPEC); + fprintf(fp, "\t{ NODEV, 0, 0 }\n"); + fprintf(fp, "};\n"); + fclose(fp); + return (swap); } -static int devtablenotread = 1; -static struct devdescription { - char *dev_name; - int dev_major; - struct devdescription *dev_next; +static int devtablenotread = 1; + +static struct devdescription { + char *dev_name; + int dev_major; + struct devdescription *dev_next; } *devtable; void initdevtable() { - char buf[BUFSIZ]; - int maj; - register struct devdescription **dp = &devtable; - FILE *fp; + char buf[BUFSIZ]; + int maj; + register struct devdescription **dp = &devtable; + FILE *fp; - (void) sprintf(buf, "../conf/devices.%s", machinename); - fp = fopen(buf, "r"); - if (fp == NULL) { - fprintf(stderr, "config: can't open %s\n", buf); - exit(1); - } - while (fscanf(fp, "%s\t%d\n", buf, &maj) == 2) { - *dp = (struct devdescription *)malloc(sizeof (**dp)); - (*dp)->dev_name = ns(buf); - (*dp)->dev_major = maj; - dp = &(*dp)->dev_next; - } - *dp = 0; - fclose(fp); - devtablenotread = 0; + (void) sprintf(buf, "../conf/devices.%s", machinename); + fp = fopen(buf, "r"); + if (fp == NULL) { + fprintf(stderr, "config: can't open %s\n", buf); + exit(1); + } + while (fscanf(fp, "%s\t%d\n", buf, &maj) == 2) { + *dp = (struct devdescription *)malloc(sizeof (**dp)); + (*dp)->dev_name = ns(buf); + (*dp)->dev_major = maj; + dp = &(*dp)->dev_next; + } + *dp = 0; + fclose(fp); + devtablenotread = 0; } /* * Given a device name specification figure out: - * major device number - * partition - * device name - * unit number + * major device number + * partition + * device name + * unit number * This is a hack, but the system still thinks in * terms of major/minor instead of string names. */ dev_t nametodev(name, defunit, defpartition) - char *name; - int defunit; - char defpartition; + char *name; + int defunit; + char defpartition; { - char *cp, partition; - int unit; - register struct devdescription *dp; + char *cp, partition; + int unit; + register struct devdescription *dp; - cp = name; - if (cp == 0) { - fprintf(stderr, "config: internal error, nametodev\n"); - exit(1); - } - while (*cp && !isdigit(*cp)) - cp++; - unit = *cp ? atoi(cp) : defunit; - if (unit < 0 || unit > 31) { - fprintf(stderr, -"config: %s: invalid device specification, unit out of range\n", name); - unit = defunit; /* carry on more checking */ - } - if (*cp) { - *cp++ = '\0'; - while (*cp && isdigit(*cp)) - cp++; - } - partition = *cp ? *cp : defpartition; - if (partition < 'a' || partition > 'h') { - fprintf(stderr, -"config: %c: invalid device specification, bad partition\n", *cp); - partition = defpartition; /* carry on */ - } - if (devtablenotread) - initdevtable(); - for (dp = devtable; dp; dp = dp->dev_next) - if (eq(name, dp->dev_name)) - break; - if (dp == 0) { - fprintf(stderr, "config: %s: unknown device\n", name); - return (NODEV); - } - return (makedev(dp->dev_major, (unit << 3) + (partition - 'a'))); + cp = name; + if (cp == 0) { + fprintf(stderr, "config: internal error, nametodev\n"); + exit(1); + } + while (*cp && !isdigit(*cp)) + cp++; + unit = *cp ? atoi(cp) : defunit; + if (unit < 0 || unit > 31) { + fprintf(stderr, + "config: %s: invalid device specification, unit out of range\n", + name); + unit = defunit; /* carry on more checking */ + } + if (*cp) { + *cp++ = '\0'; + while (*cp && isdigit(*cp)) + cp++; + } + partition = *cp ? *cp : defpartition; + if (partition < 'a' || partition > 'h') { + fprintf(stderr, + "config: %c: invalid device specification, bad partition\n", *cp); + partition = defpartition; /* carry on */ + } + if (devtablenotread) + initdevtable(); + for (dp = devtable; dp; dp = dp->dev_next) + if (eq(name, dp->dev_name)) + break; + if (dp == 0) { + fprintf(stderr, "config: %s: unknown device\n", name); + return (NODEV); + } + return (makedev(dp->dev_major, (unit << 3) + (partition - 'a'))); } char * devtoname(dev) - dev_t dev; + dev_t dev; { - char buf[80]; - register struct devdescription *dp; + char buf[80]; + register struct devdescription *dp; - if (devtablenotread) - initdevtable(); - for (dp = devtable; dp; dp = dp->dev_next) - if (major(dev) == dp->dev_major) - break; - if (dp == 0) - dp = devtable; - (void) sprintf(buf, "%s%d%c", dp->dev_name, - minor(dev) >> 3, (minor(dev) & 07) + 'a'); - return (ns(buf)); + if (devtablenotread) + initdevtable(); + for (dp = devtable; dp; dp = dp->dev_next) + if (major(dev) == dp->dev_major) + break; + if (dp == 0) + dp = devtable; + (void) sprintf(buf, "%s%d%c", dp->dev_name, + minor(dev) >> 3, (minor(dev) & 07) + 'a'); + return (ns(buf)); } diff --git a/tools/kconfig/mkubglue.c b/tools/kconfig/mkubglue.c index 51ea8ae..88ffa49 100644 --- a/tools/kconfig/mkubglue.c +++ b/tools/kconfig/mkubglue.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 1980, 1993 - * The Regents of the University of California. All rights reserved. + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -12,8 +12,8 @@ * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. + * This product includes software developed by the University of + * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. @@ -40,89 +40,89 @@ ubglue() { - register FILE *fp; - register struct device *dp, *mp; + register FILE *fp; + register struct device *dp, *mp; - fp = fopen(path("ubglue.s"), "w"); - if (fp == 0) { - perror(path("ubglue.s")); - exit(1); - } - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; + fp = fopen(path("ubglue.s"), "w"); + if (fp == 0) { + perror(path("ubglue.s")); + exit(1); + } + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && mp != (struct device *)-1 && + !eq(mp->d_name, "mba")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_vec(fp, id->id, dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_std(fp); - for (dp = dtab; dp != 0; dp = dp->d_next) { - mp = dp->d_conn; - if (mp != 0 && mp != (struct device *)-1 && - !eq(mp->d_name, "mba")) { - struct idlst *id, *id2; + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + dump_vec(fp, id->id, dp->d_unit); + break; + } + if (!strcmp(id->id, id2->id)) + break; + } + } + } + } + dump_std(fp); + for (dp = dtab; dp != 0; dp = dp->d_next) { + mp = dp->d_conn; + if (mp != 0 && mp != (struct device *)-1 && + !eq(mp->d_name, "mba")) { + struct idlst *id, *id2; - for (id = dp->d_vec; id; id = id->id_next) { - for (id2 = dp->d_vec; id2; id2 = id2->id_next) { - if (id2 == id) { - dump_intname(fp, id->id, - dp->d_unit); - break; - } - if (!strcmp(id->id, id2->id)) - break; - } - } - } - } - dump_ctrs(fp); - (void) fclose(fp); + for (id = dp->d_vec; id; id = id->id_next) { + for (id2 = dp->d_vec; id2; id2 = id2->id_next) { + if (id2 == id) { + dump_intname(fp, id->id, + dp->d_unit); + break; + } + if (!strcmp(id->id, id2->id)) + break; + } + } + } + } + dump_ctrs(fp); + (void) fclose(fp); } -static int cntcnt = 0; /* number of interrupt counters allocated */ +static int cntcnt = 0; /* number of interrupt counters allocated */ /* * print an interrupt vector */ dump_vec(fp, vector, number) - register FILE *fp; - char *vector; - int number; + register FILE *fp; + char *vector; + int number; { - char nbuf[80]; - register char *v = nbuf; + char nbuf[80]; + register char *v = nbuf; - (void) sprintf(v, "%s%d", vector, number); - fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", - v, v); - fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); - if (strncmp(vector, "dzx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); - else if (strncmp(vector, "dpx", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); - else if (strncmp(vector, "dpr", 3) == 0) - fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); - else { - if (strncmp(vector, "uur", 3) == 0) { - fprintf(fp, "#ifdef UUDMA\n"); - fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); - fprintf(fp, "#endif\n"); - } - fprintf(fp, "\tpushl\t$%d\n", number); - fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); - fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); - } + (void) sprintf(v, "%s%d", vector, number); + fprintf(fp, "\t.globl\t_X%s\n\t.align\t2\n_X%s:\n\tpushr\t$0x3f\n", + v, v); + fprintf(fp, "\tincl\t_fltintrcnt+(4*%d)\n", cntcnt++); + if (strncmp(vector, "dzx", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdzdma\n\n", number); + else if (strncmp(vector, "dpx", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdpxdma\n\n", number); + else if (strncmp(vector, "dpr", 3) == 0) + fprintf(fp, "\tmovl\t$%d,r0\n\tjmp\tdprdma\n\n", number); + else { + if (strncmp(vector, "uur", 3) == 0) { + fprintf(fp, "#ifdef UUDMA\n"); + fprintf(fp, "\tmovl\t$%d,r0\n\tjsb\tuudma\n", number); + fprintf(fp, "#endif\n"); + } + fprintf(fp, "\tpushl\t$%d\n", number); + fprintf(fp, "\tcalls\t$1,_%s\n\tpopr\t$0x3f\n", vector); + fprintf(fp, "\tincl\t_cnt+V_INTR\n\trei\n\n"); + } } /* @@ -132,61 +132,61 @@ dump_vec(fp, vector, number) * with the definitions in scb.s. */ dump_std(fp) - register FILE *fp; + register FILE *fp; { - fprintf(fp, "\n\t.globl\t_intrnames\n"); - fprintf(fp, "\n\t.globl\t_eintrnames\n"); - fprintf(fp, "\t.data\n"); - fprintf(fp, "_intrnames:\n"); - fprintf(fp, "\t.asciz\t\"clock\"\n"); - fprintf(fp, "\t.asciz\t\"cnr\"\n"); - fprintf(fp, "\t.asciz\t\"cnx\"\n"); - fprintf(fp, "\t.asciz\t\"tur\"\n"); - fprintf(fp, "\t.asciz\t\"tux\"\n"); - fprintf(fp, "\t.asciz\t\"mba0\"\n"); - fprintf(fp, "\t.asciz\t\"mba1\"\n"); - fprintf(fp, "\t.asciz\t\"mba2\"\n"); - fprintf(fp, "\t.asciz\t\"mba3\"\n"); - fprintf(fp, "\t.asciz\t\"uba0\"\n"); - fprintf(fp, "\t.asciz\t\"uba1\"\n"); - fprintf(fp, "\t.asciz\t\"uba2\"\n"); - fprintf(fp, "\t.asciz\t\"uba3\"\n"); -#define I_FIXED 13 /* number of names above */ + fprintf(fp, "\n\t.globl\t_intrnames\n"); + fprintf(fp, "\n\t.globl\t_eintrnames\n"); + fprintf(fp, "\t.data\n"); + fprintf(fp, "_intrnames:\n"); + fprintf(fp, "\t.asciz\t\"clock\"\n"); + fprintf(fp, "\t.asciz\t\"cnr\"\n"); + fprintf(fp, "\t.asciz\t\"cnx\"\n"); + fprintf(fp, "\t.asciz\t\"tur\"\n"); + fprintf(fp, "\t.asciz\t\"tux\"\n"); + fprintf(fp, "\t.asciz\t\"mba0\"\n"); + fprintf(fp, "\t.asciz\t\"mba1\"\n"); + fprintf(fp, "\t.asciz\t\"mba2\"\n"); + fprintf(fp, "\t.asciz\t\"mba3\"\n"); + fprintf(fp, "\t.asciz\t\"uba0\"\n"); + fprintf(fp, "\t.asciz\t\"uba1\"\n"); + fprintf(fp, "\t.asciz\t\"uba2\"\n"); + fprintf(fp, "\t.asciz\t\"uba3\"\n"); +#define I_FIXED 13 /* number of names above */ } dump_intname(fp, vector, number) - register FILE *fp; - char *vector; - int number; + register FILE *fp; + char *vector; + int number; { - register char *cp = vector; + register char *cp = vector; - fprintf(fp, "\t.asciz\t\""); - /* - * Skip any "int" or "intr" in the name. - */ - while (*cp) - if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { - cp += 3; - if (*cp == 'r') - cp++; - } else { - putc(*cp, fp); - cp++; - } - fprintf(fp, "%d\"\n", number); + fprintf(fp, "\t.asciz\t\""); + /* + * Skip any "int" or "intr" in the name. + */ + while (*cp) + if (cp[0] == 'i' && cp[1] == 'n' && cp[2] == 't') { + cp += 3; + if (*cp == 'r') + cp++; + } else { + putc(*cp, fp); + cp++; + } + fprintf(fp, "%d\"\n", number); } dump_ctrs(fp) - register FILE *fp; + register FILE *fp; { - fprintf(fp, "_eintrnames:\n"); - fprintf(fp, "\n\t.globl\t_intrcnt\n"); - fprintf(fp, "\n\t.globl\t_eintrcnt\n"); - fprintf(fp, "_intrcnt:\n", I_FIXED); - fprintf(fp, "\t.space\t4 * %d\n", I_FIXED); - fprintf(fp, "_fltintrcnt:\n", cntcnt); - fprintf(fp, "\t.space\t4 * %d\n", cntcnt); - fprintf(fp, "_eintrcnt:\n\n"); - fprintf(fp, "\t.text\n"); + fprintf(fp, "_eintrnames:\n"); + fprintf(fp, "\n\t.globl\t_intrcnt\n"); + fprintf(fp, "\n\t.globl\t_eintrcnt\n"); + fprintf(fp, "_intrcnt:\n", I_FIXED); + fprintf(fp, "\t.space\t4 * %d\n", I_FIXED); + fprintf(fp, "_fltintrcnt:\n", cntcnt); + fprintf(fp, "\t.space\t4 * %d\n", cntcnt); + fprintf(fp, "_eintrcnt:\n\n"); + fprintf(fp, "\t.text\n"); }