Annotation of 43BSDTahoe/sys/vaxstand/upmaptype.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)upmaptype.c 7.4 (Berkeley) 5/27/88
                      7:  */
                      8: 
                      9: /*
                     10:  * UNIBUS peripheral standalone
                     11:  * driver: drive type mapping routine.
                     12:  */
                     13: #ifdef COMPAT_42
                     14: #include "param.h" 
                     15: #include "inode.h"
                     16: #include "fs.h"
                     17: #include "dkbad.h"
                     18: #include "disklabel.h"
                     19: #include "vmmac.h"
                     20: 
                     21: #include "../vax/pte.h"
                     22: #include "../vaxuba/upreg.h"
                     23: #include "../vaxuba/ubareg.h"
                     24: 
                     25: #include "saio.h"
                     26: #include "savax.h"
                     27: 
                     28: static short   up9300_off[] = { 0,  27,  0,  -1,  -1,  -1, 562, 82 };
                     29: static short   fj_off[]     = { 0,  50,  0,  -1,  -1,  -1, 155, -1 };
                     30: static short   upam_off[]   = { 0,  32,  0, 668, 723, 778, 668, 98 };
                     31: static short   up980_off[]  = { 0, 100,  0,  -1,  -1,  -1, 309, -1 };
                     32: static short   eagle_off[]  = { 0,  17,  0, 391, 408, 728, 391, 87 };
                     33: 
                     34: struct st upst[] = {
                     35:        32,     19,     32*19,  815,    up9300_off,     /* 9300 */
                     36:        32,     19,     32*19,  823,    up9300_off,     /* 9766 */
                     37:        32,     10,     32*10,  823,    fj_off,         /* Fuji 160 */
                     38:        32,     16,     32*16,  1024,   upam_off,       /* Capricorn */
                     39:        32,     5,      32*5,   823,    up980_off,      /* DM980 */
                     40:        48,     20,     48*20,  842,    eagle_off,      /* Fuji Eagle */
                     41:        0,      0,      0,      0,      0,
                     42: };
                     43: 
                     44: upmaptype(unit, upaddr, lp)
                     45:        int unit;
                     46:        register struct updevice *upaddr;
                     47:        register struct disklabel *lp;
                     48: {
                     49:        register struct st *st;
                     50:        register int i;
                     51:        int type = -1;
                     52: 
                     53:        upaddr->upcs1 = 0;
                     54:        upaddr->upcs2 = unit % 8;
                     55:        upaddr->uphr = UPHR_MAXTRAK;
                     56:        for (st = upst;; ++st) {
                     57:                if (!st->ntrak)
                     58:                        return(0);
                     59:                if (upaddr->uphr == st->ntrak - 1) {
                     60:                        type = st - upst;
                     61:                        break;
                     62:                }
                     63:        }
                     64:        if (type == 0) {
                     65:                upaddr->uphr = UPHR_MAXCYL;
                     66:                if (upaddr->uphr == 822)        /* CDC 9766 */
                     67:                        ++type;
                     68:        }
                     69:        upaddr->upcs2 = UPCS2_CLR;
                     70:        st = &upst[type];
                     71: 
                     72:        /* set up a minimal disk label */
                     73:        lp->d_nsectors = st->nsect;
                     74:        lp->d_ntracks = st->ntrak;
                     75:        lp->d_secpercyl = st->nspc;
                     76:        lp->d_ncylinders = st->ncyl;
                     77:        lp->d_secperunit = st->nspc * st->ncyl;
                     78:        lp->d_npartitions = 8;
                     79:        for (i = 0; i < 8; i++)
                     80:                if (st->off[i] == -1)
                     81:                        lp->d_partitions[i].p_size = 0;
                     82:                else {
                     83:                        lp->d_partitions[i].p_offset = st->off[i] *
                     84:                            lp->d_secpercyl;
                     85:                        lp->d_partitions[i].p_size = lp->d_secperunit;
                     86:                }
                     87:        return(1);
                     88: }
                     89: #endif /* COMPAT_42 */

unix.superglobalmegacorp.com

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