diff options
author | Thomas Bushnell <thomas@gnu.org> | 1997-02-25 21:28:37 +0000 |
---|---|---|
committer | Thomas Bushnell <thomas@gnu.org> | 1997-02-25 21:28:37 +0000 |
commit | f07a4c844da9f0ecae5bbee1ab94be56505f26f7 (patch) | |
tree | 12b07c7e578fc1a5f53dbfde2632408491ff2a70 /i386/i386at/i82586.h |
Initial source
Diffstat (limited to 'i386/i386at/i82586.h')
-rw-r--r-- | i386/i386at/i82586.h | 264 |
1 files changed, 264 insertions, 0 deletions
diff --git a/i386/i386at/i82586.h b/i386/i386at/i82586.h new file mode 100644 index 0000000..fd20589 --- /dev/null +++ b/i386/i386at/i82586.h @@ -0,0 +1,264 @@ +/* + * Mach Operating System + * Copyright (c) 1991,1990,1989 Carnegie Mellon University + * All Rights Reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation is hereby granted, provided that both the copyright + * notice and this permission notice appear in all copies of the + * software, derivative works or modified versions, and any portions + * thereof, and that both notices appear in supporting documentation. + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * Carnegie Mellon requests users of this software to return to + * + * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU + * School of Computer Science + * Carnegie Mellon University + * Pittsburgh PA 15213-3890 + * + * any improvements or extensions that they make and grant Carnegie Mellon + * the rights to redistribute these changes. + */ +/* + Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc., +Cupertino, California. + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appears in all +copies and that both the copyright notice and this permission notice +appear in supporting documentation, and that the name of Olivetti +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. + + OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, +NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/* + * Defines for managing the status word of the 82586 cpu. For details see + * the Intel LAN Component User's Manual starting at p. 2-14. + * + */ + +#define SCB_SW_INT 0xf000 +#define SCB_SW_CX 0x8000 /* CU finished w/ int. bit set */ +#define SCB_SW_FR 0x4000 /* RU finished receiving a frame */ +#define SCB_SW_CNA 0x2000 /* CU left active state */ +#define SCB_SW_RNR 0x1000 /* RU left ready state */ + +/* + * Defines for managing the Command Unit Status portion of the 82586 + * System Control Block. + * + */ + +#define SCB_CUS_IDLE 0x0000 +#define SCB_CUS_SUSPND 0x0100 +#define SCB_CUS_ACTV 0x0200 + +/* + * Defines for managing the Receive Unit Status portion of the System + * Control Block. + * + */ + +#define SCB_RUS_IDLE 0x0000 +#define SCB_RUS_SUSPND 0x0010 +#define SCB_RUS_NORESRC 0x0020 +#define SCB_RUS_READY 0x0040 + +/* + * Defines that manage portions of the Command Word in the System Control + * Block of the 82586. Below are the Interrupt Acknowledge Bits and their + * appropriate masks. + * + */ + +#define SCB_ACK_CX 0x8000 +#define SCB_ACK_FR 0x4000 +#define SCB_ACK_CNA 0x2000 +#define SCB_ACK_RNR 0x1000 + +/* + * Defines for managing the Command Unit Control word, and the Receive + * Unit Control word. The software RESET bit is also defined. + * + */ + +#define SCB_CU_STRT 0x0100 +#define SCB_CU_RSUM 0x0200 +#define SCB_CU_SUSPND 0x0300 +#define SCB_CU_ABRT 0x0400 + +#define SCB_RESET 0x0080 + +#define SCB_RU_STRT 0x0010 +#define SCB_RU_RSUM 0x0020 +#define SCB_RU_SUSPND 0x0030 +#define SCB_RU_ABRT 0x0040 + + +/* + * The following define Action Commands for the 82586 chip. + * + */ + +#define AC_NOP 0x00 +#define AC_IASETUP 0x01 +#define AC_CONFIGURE 0x02 +#define AC_MCSETUP 0x03 +#define AC_TRANSMIT 0x04 +#define AC_TDR 0x05 +#define AC_DUMP 0x06 +#define AC_DIAGNOSE 0x07 + + +/* + * Defines for General Format for Action Commands, both Status Words, and + * Command Words. + * + */ + +#define AC_SW_C 0x8000 +#define AC_SW_B 0x4000 +#define AC_SW_OK 0x2000 +#define AC_SW_A 0x1000 +#define TC_CARRIER 0x0400 +#define TC_CLS 0x0200 +#define TC_DMA 0x0100 +#define TC_DEFER 0x0080 +#define TC_SQE 0x0040 +#define TC_COLLISION 0x0020 +#define AC_CW_EL 0x8000 +#define AC_CW_S 0x4000 +#define AC_CW_I 0x2000 + +/* + * Specific defines for the transmit action command. + * + */ + +#define TBD_SW_EOF 0x8000 +#define TBD_SW_COUNT 0x3fff + +/* + * Specific defines for the receive frame actions. + * + */ + +#define RBD_SW_EOF 0x8000 +#define RBD_SW_COUNT 0x3fff + +#define RFD_DONE 0x8000 +#define RFD_BUSY 0x4000 +#define RFD_OK 0x2000 +#define RFD_CRC 0x0800 +#define RFD_ALN 0x0400 +#define RFD_RSC 0x0200 +#define RFD_DMA 0x0100 +#define RFD_SHORT 0x0080 +#define RFD_EOF 0x0040 +#define RFD_EL 0x8000 +#define RFD_SUSP 0x4000 +/* + * 82586 chip specific structure definitions. For details, see the Intel + * LAN Components manual. + * + */ + + +typedef struct { + u_short scp_sysbus; + u_short scp_unused[2]; + u_short scp_iscp; + u_short scp_iscp_base; +} scp_t; + + +typedef struct { + u_short iscp_busy; + u_short iscp_scb_offset; + u_short iscp_scb; + u_short iscp_scb_base; +} iscp_t; + + +typedef struct { + u_short scb_status; + u_short scb_command; + u_short scb_cbl_offset; + u_short scb_rfa_offset; + u_short scb_crcerrs; + u_short scb_alnerrs; + u_short scb_rscerrs; + u_short scb_ovrnerrs; +} scb_t; + + +typedef struct { + u_short tbd_offset; + u_char dest_addr[6]; + u_short length; +} transmit_t; + + +typedef struct { + u_short fifolim_bytecnt; + u_short addrlen_mode; + u_short linprio_interframe; + u_short slot_time; + u_short hardware; + u_short min_frame_len; +} configure_t; + + +typedef struct { + u_short ac_status; + u_short ac_command; + u_short ac_link_offset; + union { + transmit_t transmit; + configure_t configure; + u_char iasetup[6]; + } cmd; +} ac_t; + + +typedef struct { + u_short act_count; + u_short next_tbd_offset; + u_short buffer_addr; + u_short buffer_base; +} tbd_t; + + +typedef struct { + u_short status; + u_short command; + u_short link_offset; + u_short rbd_offset; + u_char destination[6]; + u_char source[6]; + u_short length; +} fd_t; + + +typedef struct { + u_short status; + u_short next_rbd_offset; + u_short buffer_addr; + u_short buffer_base; + u_short size; +} rbd_t; |