⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipreg.h

📁 操作系统SunOS 4.1.3版本的源码
💻 H
字号:
/*      @(#)ipreg.h 1.1 92/07/30 SMI; from UCB X.X XX/XX/XX       *//* * Copyright (c) 1987 by Sun Microsystems, Inc. *//* * I/O space registers for Interphase disk controllers * (Note byte swapping) */struct ipdevice {	u_char	ip_r1, ip_r0;	u_char	ip_r3, ip_r2;};/* bits written to R0 */#define IP_GO		0x01#define IP_CLRINT	0x02/* bits read from R0 */#define IP_BUSY		0x01#define IP_COMPLETE	0x02/* * Format of IOPB in Multibus memory * Brain damage due to byte-swapping * iopb0 for 2180, 2880 * iopb1 for 2181 */struct iopb0 {	u_char	i0_status;	/* 01 - status of command */	u_char	i0_cmd;		/* 00 - command code */	u_char	i0_unit_cylhi;	/* 03 - unit(4 bits) & hi-order cyl(4 bits) */	u_char	i0_error;	/* 02 - error code */	u_char	i0_sector;	/* 05 - sector number */	u_char	i0_cylinder;	/* 04 - low-order cylinder */	u_char	i0_buf_xmb;	/* 07 - high-order buffer address */	u_char	i0_secnt;	/* 06 - sector count */	u_char	i0_buf_lsb;	/* 09 - low-order buffer address */	u_char	i0_buf_msb;	/* 08 - mid-order buffer address */	u_char	i0_ioaddr;	/* 0b - controller I/O address */	u_char	i0_head;	/* 0a - head number */	u_char	i0_nxt_xmb;	/* 0d - high-order next IOPB addr */	u_char	i0_burstlen;	/* 0c - DMA burst length */	u_char	i0_nxt_lsb;	/* 0f - low-order next IOPB addr */	u_char	i0_nxt_msb;	/* 0e - mid-order next IOPB addr */	u_char	i0_seg_lsb;	/* 11 - 8086 segment low-order (0 for us) */	u_char	i0_seg_msb;	/* 10 - 8086 segment high-order (0 for us) */};struct iopb1 {	u_char	i1_cmdopt;	/* 01 - command options */	u_char	i1_cmd;		/* 00 - command code */	u_char	i1_error;	/* 03 - error code */	u_char	i1_status;	/* 02 - status of command */	u_char	i1_head;	/* 05 - head number */	u_char	i1_unit;	/* 04 - unit number */	u_char	i1_cyl_lsb;	/* 07 - cyl low byte */	u_char	i1_cyl_msb;	/* 06 - cyl hi byte */	u_char	i1_sect_lsb;	/* 09 - sector low byte */	u_char	i1_sect_msb;	/* 08 - sector hi byte */	u_char	i1_secnt_lsb;	/* 0b - # sectors low byte */	u_char	i1_secnt_msb;	/* 0a - # sectors hi byte */	u_char	i1_buf_xmb;	/* 0d - high-order buffer address */	u_char	i1_burstlen;	/* 0c - DMA burst length */	u_char	i1_buf_lsb;	/* 0f - low-order buffer address */	u_char	i1_buf_msb;	/* 0e - mid-order buffer address */	u_char	i1_ioadd_lsb;	/* 11 - I/O address low byte */	u_char	i1_ioadd_msb;	/* 10 - I/O address hi byte */	u_char	i1_seg_lsb;	/* 13 - 8086 segment low-order (0 for us) */	u_char	i1_seg_msb;	/* 12 - 8086 segment high-order (0 for us) */	u_char	i1_nxt_xmb;	/* 15 - high-order next IOPB addr */	u_char	i1_unused;	/* 14 - reserved */	u_char	i1_nxt_lsb;	/* 17 - low-order next IOPB addr */	u_char	i1_nxt_msb;	/* 16 - mid-order next IOPB addr */};#ifdef lint#define IPIOPBSZ (sizeof (struct iopb1))#else#define IPIOPBSZ (MAX(sizeof (struct iopb0), sizeof (struct iopb1)))#endif#define	IP_BUS		0x20	/* 0 => 8 bit bus, 0x20 => 16 bit bus */#define IP1_CMDOPT	0x11	/* 16 bit bus for 2181 */#define IP_REL		0	/* absolute addressing */#define IP0_BURSTLEN	16	/* # bus cycles at a time *//* * The blood of countless hours of exasperation lies in the following constant. * Do not lightly muck with it! */#define IP1_BURSTLEN	0x40	/* # bus cycles at a time *//* Command codes for i_cmd */#define	IP_READ		0x81#define	IP_WRITE	0x82#define	IP_VERIFY	0x83#define	IP_FORMAT	0x84#define	IP_MAP		0x85#define	IP_SWITCH	0x86		/* read switches */#define	IP_INIT		0x87		/* not in 2180 */#define	IP_RESTORE	0x89#define	IP_SEEK		0x8A#define	IP_ZERO		0x8B#define	IP_SPINDWN	0x8C		/* ANSI only */#define	IP_RESET	0x8F		/* SMD only *//* Status codes for i_status */#define	IP_OK		0x80#define	IP_DBUSY	0x81#define	IP_ERROR	0x82/* * Unit Initialization Block * Not used for SMD-2180 */struct uib {	u_char	uib_nsect;	/* 1 - # sectors per track */	u_char	uib_nhead;	/* 0 - # heads per cyl */	u_short	uib_secsize;	/* 2,3 - sector size */	u_char	uib_gap2;	/* 5 - size of gap 2 */	u_char	uib_gap1;	/* 4 - size of gap 1 */	u_char	uib_retry;	/* 7 - # of retries */	u_char	uib_intrlv;	/* 6 - interleave factor */	u_char	uib_reseek;	/* 9 - # of restores */	u_char	uib_ecc;	/* 8 - ECC enable */	u_char	uib_incrh;	/* 11 - incr by head enable */	u_char	uib_movebad;	/* 10 - move bad data enable */	/* Following fields for 2181 only */	u_char	uib_istatus;	/* 13 - interrupt on status change */		u_char	uib_dualport;	/* 12 - dual port drive */	u_char	uib_reserve1;	/* 15 - reserved */	u_char	uib_skew;	/* 14 - spiral skew factor */	u_short	uib_reserve2;	/* 16,17 - reserved */};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -