Annotation of cci/sys/vba/udc.h, revision 1.1.1.1

1.1       root        1: struct UDPAC {         /* UDC command packet */
                      2:        char _stx  ;
                      3:        char _pkid ;
                      4:        char _pksiz ;   /* 21  bytes */
                      5:        char _pkdev ;   /* device # */  
                      6:        char _pkcmd ;   /* Command type */
                      7:        char _pkfnc ;   /* Function type */
                      8:        short _pkcnt ;  /* # of data blocks (1/4K each) */
                      9:        short _pbsiz ;  /* Block length size (0x100 = 1/4K) */
                     10:        short _pkmem[2] ;       /* Starting memory address.Should be 'long' but
                     11:                                   we can't write it this way on Tahoe,
                     12:                                   because of alignment problems - the C
                     13:                                   will gap after the previous 'short' */
                     14:        short _pcksm ;  /* Checksum (unused) */
                     15:        long _psecno ;  /* Starting sector # */
                     16:        char _etx ;
                     17: } 
                     18: ;
                     19: 
                     20: #define SECTSIZ 256            /* sector size */
                     21: #define L2SIZ  8               /* log2 of sector size */
                     22: #define L2BSIZ 10              /* log2 of block size */
                     23: #define NUDC   1               /* number of UDC controllers */
                     24: #define NUNIT  8               /* number of units per controller */
                     25: #define NUDDRV 5               /* number of drive types supported */
                     26: #define        DK_N    1               /* Monitoring device bit */
                     27: 
                     28: /*
                     29: **     Block devices sizes structure
                     30: */
                     31: 
                     32: struct size
                     33: {
                     34:        daddr_t nblocks;
                     35:        int     block0;
                     36: };
                     37: 
                     38: #define udaddr ( (char *)(0xff0000+IOBASE) )
                     39: #define INT 0x00d              /* interrupt offset */
                     40: #define RST 0x00f              /* controller reset offset */
                     41: #define OB1 0x101
                     42: #define OB2 0x103
                     43: #define IB1 0x181
                     44: #define IB2 0x183
                     45: #define        PKID  0x187             /* packet id */
                     46: #define        PKLEN 0x189             /* packet length */
                     47: #define        PKDEV 0x18b             /* device # */
                     48: #define        PKCMD 0x18d             /* command type */
                     49: #define        PKSTT 0x18f             /* status type */
                     50: #define STAT1 0x191            /* i/o status result offset */
                     51: #define STAT2 0x193
                     52: #define DEVSTAT1 0x195
                     53: #define DEVSTAT2 0x197
                     54: #define DEVSIZE 0x199          /* # of sectors in device status message */
                     55: 
                     56: #define UDREAD 0x10
                     57: #define UDWTRY 0x01    /* read with retry */
                     58: 
                     59: #define UDWRITE 0x20
                     60: #define UDWCRC  0x01   /* write sectors and check CRC */
                     61: #define UDWSECT 0x02   /* write sectors */
                     62: 
                     63: #define UDTEST  0x30
                     64: #define UDSTAT  0x02   /* Test status */
                     65: 
                     66: #define DEVRDY 0x80            /* device ready bit in status byte */
                     67: #define        DEVTYPE 0x7             /* bits 0-2 in status byte define device */
                     68: #define FLP 0x1
                     69: #define HARDDISK 0x2
                     70: #define TAPE   0x5
                     71: 
                     72: /*  Some I/O addresses used to generate pulses for scopes */
                     73: #define        OUT1    0xffffb034
                     74: #define        OUT2    0xffffb018
                     75: #define        OUT3    0xffffb020
                     76: #define        OUT4    0xffffb004
                     77: #define        OUT5    0xffffb024
                     78: #define        OUT6    0xffffb00c
                     79: #define        OUT7    0xffffb02c
                     80: 
                     81: #define        IN1     0xffffb030
                     82: #define        IN2     0xffffb03c
                     83: #define        IN3     0xffffb004
                     84: #define        IN4     0xffffb00c
                     85: #define        IN5     0xffffb02c
                     86: 
                     87: int dummy;
                     88: extern char vmem[][16*NBPG];
                     89: 
                     90: #define        IOaddr(off)     (char *)((int)vmem + ((off) & 0x0fffff))
                     91: 
                     92: int    iospace_mapped;
                     93: #define        scope_out(x)    if(iospace_mapped) movob (0, IOaddr(OUT/**/x))
                     94: #define        scope_in(x)     if(iospace_mapped) dummy =  *IOaddr(IN/**/x)

unix.superglobalmegacorp.com

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