Annotation of researchv10dc/lsys/sys/ubaddr.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * addressing stuff for unibus devices
        !             3:  */
        !             4: 
        !             5: struct ubaddr {
        !             6:        long uboff;     /* address within unibus space */
        !             7:        short vec;      /* vector (within unibus) */
        !             8:        short ubno;     /* unibus number */
        !             9: };
        !            10: 
        !            11: /*
        !            12:  * unibus map things
        !            13:  */
        !            14: 
        !            15: typedef        long    ubm_t;          /* cookie for a piece of unibus map */
        !            16: typedef        long    uaddr_t;        /* 18-bit unibus or 22-bit q-bus address */
        !            17: 
        !            18: /*
        !            19:  * pieces of ubm_t;
        !            20:  * ubmpath is probably the only one
        !            21:  * useful outside the unibus code
        !            22:  *
        !            23:  * bits 0-12   first reg index; enough for 22 bits of addr space (q-bus)
        !            24:  * bits 13-19  number of map registers; enough for 64kb transfer
        !            25:  *             number offset by UMSZERO -- alignment page + end sentinel
        !            26:  * bits 20-23  data path
        !            27:  */
        !            28: 
        !            29: #define        UMFIRST 0
        !            30: #define        UMSIZE  13
        !            31: #define        UMSZERO 2
        !            32: #define        UMDP    20
        !            33: 
        !            34: #define        ubmfirst(m)     (int)((m)&017777)
        !            35: #define        ubmsize(m)      (int)((((m)>>UMSIZE)&0177)+UMSZERO)
        !            36: #define        ubmpath(m)      (int)(((m)>>UMDP)&017)
        !            37: 
        !            38: /*
        !            39:  * change map m to use path p
        !            40:  */
        !            41: 
        !            42: #define        ubinspath(p, m) (((m)&~(017<<UMDP))|((p)<<UMDP))
        !            43: 
        !            44: #define        NOMAP   ((-1L)<<23)     /* this is a phony piece of map */
        !            45: 
        !            46: /*
        !            47:  * map flags
        !            48:  */
        !            49: 
        !            50: #define        UBDP    01      /* want a bdp if possible */
        !            51: #define        USLP    02      /* ok to sleep waiting for free map or path */
        !            52: #define        UPAG    04      /* transfer is page-aligned; saves a map reg */
        !            53: 
        !            54: #ifdef KERNEL
        !            55: caddr_t ubaddr();
        !            56: ubm_t ubmalloc();
        !            57: uaddr_t ubmaddr();
        !            58: uaddr_t ubmsetmap();
        !            59: ubm_t ubmbuf(), ubmblk();
        !            60: uaddr_t ubadbuf(), ubadrptr(), ubadwptr();
        !            61: #endif

unix.superglobalmegacorp.com

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