Annotation of Gnu-Mach/i386/i386at/i82586.h, revision 1.1.1.1

1.1       root        1: /* 
                      2:  * Mach Operating System
                      3:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
                      4:  * All Rights Reserved.
                      5:  * 
                      6:  * Permission to use, copy, modify and distribute this software and its
                      7:  * documentation is hereby granted, provided that both the copyright
                      8:  * notice and this permission notice appear in all copies of the
                      9:  * software, derivative works or modified versions, and any portions
                     10:  * thereof, and that both notices appear in supporting documentation.
                     11:  * 
                     12:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     13:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
                     14:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     15:  * 
                     16:  * Carnegie Mellon requests users of this software to return to
                     17:  * 
                     18:  *  Software Distribution Coordinator  or  [email protected]
                     19:  *  School of Computer Science
                     20:  *  Carnegie Mellon University
                     21:  *  Pittsburgh PA 15213-3890
                     22:  * 
                     23:  * any improvements or extensions that they make and grant Carnegie Mellon
                     24:  * the rights to redistribute these changes.
                     25:  */
                     26: /*
                     27:   Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc.,
                     28: Cupertino, California.
                     29: 
                     30:                All Rights Reserved
                     31: 
                     32:   Permission to use, copy, modify, and distribute this software and
                     33: its documentation for any purpose and without fee is hereby
                     34: granted, provided that the above copyright notice appears in all
                     35: copies and that both the copyright notice and this permission notice
                     36: appear in supporting documentation, and that the name of Olivetti
                     37: not be used in advertising or publicity pertaining to distribution
                     38: of the software without specific, written prior permission.
                     39: 
                     40:   OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
                     41: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
                     42: IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
                     43: CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
                     44: LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
                     45: NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION
                     46: WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     47: */
                     48: 
                     49: /*
                     50:  * Defines for managing the status word of the 82586 cpu.  For details see
                     51:  * the Intel LAN Component User's Manual starting at p. 2-14.
                     52:  *
                     53:  */
                     54: 
                     55: #define SCB_SW_INT     0xf000
                     56: #define SCB_SW_CX      0x8000          /* CU finished w/ int. bit set */
                     57: #define SCB_SW_FR      0x4000          /* RU finished receiving a frame */
                     58: #define SCB_SW_CNA     0x2000          /* CU left active state */
                     59: #define SCB_SW_RNR     0x1000          /* RU left ready state */
                     60: 
                     61: /* 
                     62:  * Defines for managing the Command Unit Status portion of the 82586
                     63:  * System Control Block.
                     64:  *
                     65:  */
                     66: 
                     67: #define SCB_CUS_IDLE   0x0000
                     68: #define SCB_CUS_SUSPND 0x0100
                     69: #define SCB_CUS_ACTV   0x0200
                     70: 
                     71: /* 
                     72:  * Defines for managing the Receive Unit Status portion of the System
                     73:  * Control Block.
                     74:  *
                     75:  */
                     76: 
                     77: #define SCB_RUS_IDLE   0x0000
                     78: #define SCB_RUS_SUSPND 0x0010
                     79: #define SCB_RUS_NORESRC 0x0020
                     80: #define SCB_RUS_READY  0x0040
                     81: 
                     82: /*
                     83:  * Defines that manage portions of the Command Word in the System Control
                     84:  * Block of the 82586.  Below are the Interrupt Acknowledge Bits and their
                     85:  * appropriate masks.
                     86:  *
                     87:  */
                     88: 
                     89: #define SCB_ACK_CX     0x8000
                     90: #define SCB_ACK_FR     0x4000
                     91: #define SCB_ACK_CNA    0x2000
                     92: #define SCB_ACK_RNR    0x1000
                     93: 
                     94: /* 
                     95:  * Defines for managing the Command Unit Control word, and the Receive
                     96:  * Unit Control word.  The software RESET bit is also defined.
                     97:  *
                     98:  */
                     99: 
                    100: #define SCB_CU_STRT    0x0100
                    101: #define SCB_CU_RSUM    0x0200
                    102: #define SCB_CU_SUSPND  0x0300
                    103: #define SCB_CU_ABRT    0x0400
                    104: 
                    105: #define SCB_RESET      0x0080
                    106: 
                    107: #define SCB_RU_STRT    0x0010
                    108: #define SCB_RU_RSUM    0x0020
                    109: #define SCB_RU_SUSPND  0x0030
                    110: #define SCB_RU_ABRT    0x0040
                    111: 
                    112: 
                    113: /*
                    114:  * The following define Action Commands for the 82586 chip.
                    115:  *
                    116:  */
                    117: 
                    118: #define        AC_NOP          0x00
                    119: #define AC_IASETUP     0x01
                    120: #define AC_CONFIGURE   0x02
                    121: #define AC_MCSETUP     0x03
                    122: #define AC_TRANSMIT    0x04
                    123: #define AC_TDR         0x05
                    124: #define AC_DUMP                0x06
                    125: #define AC_DIAGNOSE    0x07
                    126: 
                    127: 
                    128: /*
                    129:  * Defines for General Format for Action Commands, both Status Words, and
                    130:  * Command Words.
                    131:  *
                    132:  */
                    133: 
                    134: #define AC_SW_C                0x8000
                    135: #define AC_SW_B                0x4000
                    136: #define AC_SW_OK       0x2000
                    137: #define AC_SW_A                0x1000
                    138: #define TC_CARRIER     0x0400
                    139: #define TC_CLS         0x0200
                    140: #define TC_DMA         0x0100
                    141: #define TC_DEFER       0x0080
                    142: #define TC_SQE         0x0040
                    143: #define TC_COLLISION   0x0020
                    144: #define        AC_CW_EL        0x8000
                    145: #define AC_CW_S                0x4000
                    146: #define AC_CW_I                0x2000
                    147: 
                    148: /*
                    149:  * Specific defines for the transmit action command.
                    150:  *
                    151:  */
                    152: 
                    153: #define TBD_SW_EOF     0x8000
                    154: #define TBD_SW_COUNT   0x3fff
                    155: 
                    156: /*
                    157:  * Specific defines for the receive frame actions.
                    158:  *
                    159:  */
                    160: 
                    161: #define RBD_SW_EOF     0x8000
                    162: #define RBD_SW_COUNT   0x3fff
                    163: 
                    164: #define RFD_DONE       0x8000
                    165: #define RFD_BUSY       0x4000
                    166: #define RFD_OK         0x2000
                    167: #define RFD_CRC                0x0800
                    168: #define RFD_ALN                0x0400
                    169: #define RFD_RSC                0x0200
                    170: #define RFD_DMA                0x0100
                    171: #define RFD_SHORT      0x0080
                    172: #define RFD_EOF                0x0040
                    173: #define RFD_EL         0x8000
                    174: #define RFD_SUSP       0x4000
                    175: /*
                    176:  * 82586 chip specific structure definitions.  For details, see the Intel
                    177:  * LAN Components manual.
                    178:  *
                    179:  */
                    180: 
                    181: 
                    182: typedef        struct  {
                    183:        u_short scp_sysbus;
                    184:        u_short scp_unused[2];
                    185:        u_short scp_iscp;
                    186:        u_short scp_iscp_base;
                    187: } scp_t;
                    188: 
                    189: 
                    190: typedef        struct  {
                    191:        u_short iscp_busy;
                    192:        u_short iscp_scb_offset;
                    193:        u_short iscp_scb;
                    194:        u_short iscp_scb_base;
                    195: } iscp_t;
                    196: 
                    197: 
                    198: typedef struct {
                    199:        u_short scb_status;
                    200:        u_short scb_command;
                    201:        u_short scb_cbl_offset;
                    202:        u_short scb_rfa_offset;
                    203:        u_short scb_crcerrs;
                    204:        u_short scb_alnerrs;
                    205:        u_short scb_rscerrs;
                    206:        u_short scb_ovrnerrs;
                    207: } scb_t;
                    208: 
                    209: 
                    210: typedef        struct  {
                    211:        u_short tbd_offset;
                    212:        u_char  dest_addr[6];
                    213:        u_short length;
                    214: } transmit_t;
                    215: 
                    216: 
                    217: typedef        struct  {
                    218:        u_short fifolim_bytecnt;
                    219:        u_short addrlen_mode;
                    220:        u_short linprio_interframe;
                    221:        u_short slot_time;
                    222:        u_short hardware;
                    223:        u_short min_frame_len;
                    224: } configure_t;
                    225: 
                    226: 
                    227: typedef        struct  {
                    228:        u_short ac_status;
                    229:        u_short ac_command;
                    230:        u_short ac_link_offset;
                    231:        union   {
                    232:                transmit_t      transmit;
                    233:                configure_t     configure;
                    234:                u_char          iasetup[6];
                    235:        } cmd;
                    236: } ac_t;
                    237:        
                    238: 
                    239: typedef        struct  {
                    240:        u_short act_count;
                    241:        u_short next_tbd_offset;
                    242:        u_short buffer_addr;
                    243:        u_short buffer_base;
                    244: } tbd_t;
                    245: 
                    246: 
                    247: typedef        struct  {
                    248:        u_short status;
                    249:        u_short command;
                    250:        u_short link_offset;
                    251:        u_short rbd_offset;
                    252:        u_char  destination[6];
                    253:        u_char  source[6];
                    254:        u_short length;
                    255: } fd_t;
                    256: 
                    257: 
                    258: typedef        struct  {
                    259:        u_short status;
                    260:        u_short next_rbd_offset;
                    261:        u_short buffer_addr;
                    262:        u_short buffer_base;
                    263:        u_short size;
                    264: } rbd_t;

unix.superglobalmegacorp.com

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