Annotation of researchv10no/sys/mkconf/writlow.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * write system control block
                      3:  */
                      4: 
                      5: #include <libc.h>
                      6: #include "mkconf.h"
                      7: 
                      8: #define        SVSIZE  4       /* size of an scb vector */
                      9: 
                     10: writlow(f)
                     11: char *f;
                     12: {
                     13:        int fd;
                     14:        register Scb *sp;
                     15:        register int ssize;
                     16:        register int i;
                     17:        register Dev *dp;
                     18: 
                     19:        if ((fd = creat(f, 0666)) < 0) {
                     20:                perror(f);
                     21:                exit(1);
                     22:        }
                     23:        /*
                     24:         * system control block
                     25:         */
                     26:        fprint(fd, "\t.text\n\t.align 9\n\t.set INTSTACK,1\n");
                     27:        fprint(fd, "\t.globl\tscb\nscb:\n");
                     28:        for (ssize = 0, sp = llist; sp; ssize = sp->offset+SVSIZE, sp = sp->next) {
                     29:                for (; ssize < sp->offset; ssize += SVSIZE)
                     30:                        fprint(fd, "\t.long straycatch+0x%x+INTSTACK\n", ssize);
                     31:                fprint(fd, "\t.long %s%s\n", sp->name, sp->type == SINTR ? "+INTSTACK" : "");
                     32:        }
                     33:        while ((ssize & 0x1fc) != 0) {
                     34:                fprint(fd, "\t.long straycatch+0x%x+INTSTACK\n", ssize);
                     35:                ssize += SVSIZE;
                     36:        }
                     37:        /*
                     38:         * stray catching stuff
                     39:         */
                     40:        fprint(fd, "\t.globl\tstraycatch\nstraycatch:\n");
                     41:        for (i = 0; i < ssize; i += SVSIZE)
                     42:                fprint(fd, "\t.align 2; bsbw stray\n");
                     43:        /*
                     44:         * trampoline, because assembler can't cope with global bsbw
                     45:         */
                     46:        fprint(fd, "stray:\tjmp Xstray\n");
                     47:        /*
                     48:         * interface routines
                     49:         */
                     50:        for (dp = dlist; dp; dp = dp->next)
                     51:                (*acode[dp->mdev->atype].putvec)(fd, dp);
                     52:        close(fd);
                     53: }
                     54: 
                     55: stdputvec(fd, dp, name, ix)
                     56: int fd;
                     57: Dev *dp;
                     58: char *name;
                     59: int ix;
                     60: {
                     61:        Mdev *mp;
                     62: 
                     63:        mp = dp->mdev;
                     64:        if (mp->flags & FRAWVEC)
                     65:                return;
                     66:        fprint(fd, "\t.align 2\n.globl _%s%dint\n%s:\n", mp->tag, ix, name);
                     67:        fprint(fd, "\tpushr\t$0x3f\n");
                     68:        if (dp->id == 0)
                     69:                fprint(fd, "\tclrl\t-(sp)\n");
                     70:        else
                     71:                fprint(fd, "\tpushl\t$%d\n", dp->id);
                     72:        fprint(fd, "\tcalls\t$1,_%s%dint\n", mp->tag, ix);
                     73:        fprint(fd, "\tpopr\t$0x3f\n\trei\n");
                     74: }

unix.superglobalmegacorp.com

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