Annotation of cci/usr/src/etc/config/mkvbglue.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char sccsid[] = "@(#)mkubglue.c 1.11 (Berkeley) 8/11/83";
        !             3: #endif
        !             4: 
        !             5: /*
        !             6:  * Make the uba interrupt file ubglue.s
        !             7:  */
        !             8: #include <stdio.h>
        !             9: #include "config.h"
        !            10: #include "y.tab.h"
        !            11: #include "maxconf.h"
        !            12: 
        !            13: ubglue()
        !            14: {
        !            15:        register FILE *fp;
        !            16:        register struct device *dp, *mp;
        !            17:        int i,j;
        !            18: 
        !            19:        fp = fopen(path("ubglue.s"), "w");
        !            20:        if (fp == 0) {
        !            21:                perror(path("ubglue.s"));
        !            22:                exit(1);
        !            23:        }
        !            24:        for (dp = dtab; dp != 0; dp = dp->d_next) {
        !            25:        /*
        !            26:                printdp(dp);
        !            27:        */
        !            28:                mp = dp->d_conn;
        !            29:                if (mp != 0 && mp != (struct device *)-1 &&
        !            30:                    !eq(mp->d_name, "mba")) {
        !            31:                        struct idlst *id, *id2;
        !            32: 
        !            33:                        for (id = dp->d_vec; id; id = id->id_next) {
        !            34:                                for (id2 = dp->d_vec; id2; id2 = id2->id_next) {
        !            35:                                        if (id2 == id) {
        !            36:                                                dump_vec(fp, id->id, dp->d_unit);
        !            37:                                                /* increment counter for each 
        !            38:                                                /* vector which is dumped.
        !            39:                                                */
        !            40:                                                for(i=0;i<=maxvects;i++)
        !            41:                                                if(!strcmp(id->id,max_conf[i].mc_intname))
        !            42:                                                        max_conf[i].mc_count++;
        !            43:                                                break;
        !            44:                                        }
        !            45:                                        if (!strcmp(id->id, id2->id))
        !            46:                                                break;
        !            47:                                }
        !            48:                        }
        !            49:                }
        !            50:        }
        !            51:        for(i=0 ; i<=maxvects ; i++)
        !            52:                for(j=max_conf[i].mc_count;j < max_conf[i].mc_max;j++)
        !            53:                        dump_dummy(fp,max_conf[i].mc_intname,j);
        !            54:        (void) fclose(fp);
        !            55: }
        !            56: 
        !            57: printdp(dp)
        !            58:        register struct device *dp;
        !            59: {
        !            60: struct idlst *id;
        !            61:        printf("dp=%x, Type=%d, connected to %x, name:%s\n",
        !            62:                dp,dp->d_type,dp->d_conn,dp->d_name);
        !            63:        printf("vectors:");
        !            64:        for (id = dp->d_vec; id; id = id->id_next) 
        !            65:                printf(" %s, ",id->id);
        !            66:        printf("\n pri=%d, addr=%d, unit=%d, drive=%d, slave=%d \n",
        !            67:                dp->d_pri,dp->d_addr,dp->d_unit,dp->d_drive,dp->d_slave);
        !            68:        printf("Next one in list: %x\n",dp->d_next);
        !            69: }
        !            70: 
        !            71: 
        !            72: 
        !            73: /*
        !            74:  * print an interrupt vector
        !            75:  */
        !            76: dump_vec(fp, vector, number)
        !            77:        register FILE *fp;
        !            78:        char *vector;
        !            79:        int number;
        !            80: {
        !            81:        char nbuf[80];
        !            82:        register char *v = nbuf;
        !            83: 
        !            84:        (void) sprintf(v, "%s%d", vector, number);
        !            85:        fprintf(fp, "SCBVEC(%s):\n", v);
        !            86:        fprintf(fp, "\tCHECK_SFE(4)\n");
        !            87:        fprintf(fp, "\tSAVE_FPSTAT(4)\n");
        !            88:        fprintf(fp, "\tPUSHR\n");
        !            89:        fprintf(fp, "\tpushl\t$%d\n", number);
        !            90:        fprintf(fp, "\tcallf\t$8,_%s\n", vector);
        !            91:        fprintf(fp, "\tincl\t_cnt+V_INTR\n");
        !            92:        fprintf(fp, "\tPOPR\n");
        !            93:        fprintf(fp, "\tREST_FPSTAT\n");
        !            94:        fprintf(fp, "\trei\n\n");
        !            95: /*  We will have to change some of the names of the driver routines... */
        !            96: 
        !            97: 
        !            98: }
        !            99: /*
        !           100:  * print an unimplemented (in the present configuration)interrupt vector
        !           101:  */
        !           102: dump_dummy(fp, vector, number)
        !           103:        register FILE *fp;
        !           104:        char *vector;
        !           105:        int number;
        !           106: {
        !           107:        char nbuf[80];
        !           108:        register char *v = nbuf;
        !           109: 
        !           110:        (void) sprintf(v, "%s%d", vector, number);
        !           111:        fprintf(fp, "SCBVEC(%s):\n", v);
        !           112:        fprintf(fp, "\tSAVE_FPSTAT(4);\n");
        !           113:        fprintf(fp, "\tPUSHR;\n");
        !           114:        fprintf(fp, "\tPRINTF(0,\"******* Unimplemented interrupt ");
        !           115:        fprintf(fp, "(%s) ********\\n\");\n", v);
        !           116:        fprintf(fp, "\tPOPR;\n\trei\n\n");
        !           117:        fprintf(fp, "\tREST_FPSTAT;\n\trei\n\n");
        !           118: 
        !           119: 
        !           120: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.