Annotation of researchv10dc/lsys/sys/ubaddr.h, revision 1.1.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.