Annotation of sys/arch/mvme88k/dev/vsreg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: vsreg.h,v 1.14 2006/12/21 02:28:47 krw Exp $ */
! 2: /*
! 3: * Copyright (c) 2004, Miodrag Vallat.
! 4: * Copyright (c) 1999 Steve Murphree, Jr.
! 5: * Copyright (c) 1990 The Regents of the University of California.
! 6: * All rights reserved.
! 7: *
! 8: * This code is derived from source contributed by Mark Bellon.
! 9: *
! 10: * Redistribution and use in source and binary forms, with or without
! 11: * modification, are permitted provided that the following conditions
! 12: * are met:
! 13: * 1. Redistributions of source code must retain the above copyright
! 14: * notice, this list of conditions and the following disclaimer.
! 15: * 2. Redistributions in binary form must reproduce the above copyright
! 16: * notice, this list of conditions and the following disclaimer in the
! 17: * documentation and/or other materials provided with the distribution.
! 18: * 3. Neither the name of the University nor the names of its contributors
! 19: * may be used to endorse or promote products derived from this software
! 20: * without specific prior written permission.
! 21: *
! 22: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
! 23: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 24: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 25: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
! 26: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 27: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 28: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 29: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 30: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 31: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 32: * SUCH DAMAGE.
! 33: */
! 34:
! 35: #ifndef _MVME328_REG_H_
! 36: #define _MVME328_REG_H_
! 37:
! 38: /*
! 39: * JAGUAR specific device limits
! 40: */
! 41:
! 42: #define JAGUAR_MIN_Q_SIZ 2
! 43: #define JAGUAR_MAX_CTLR_CMDS 80 /* Interphase says so */
! 44: #define JAGUAR_MAX_Q_SIZ (JAGUAR_MAX_CTLR_CMDS / NUM_WQ)
! 45:
! 46: /*
! 47: * COUGAR specific device limits
! 48: */
! 49:
! 50: #define COUGAR_MIN_Q_SIZ 2
! 51: #define COUGAR_CMDS_PER_256K 42 /* Interphase says so */
! 52:
! 53: /*
! 54: * Structures
! 55: */
! 56:
! 57: #define NUM_CQE 10
! 58: #define NUM_IOPB NUM_CQE
! 59: #define NUM_WQ 15
! 60:
! 61: /*
! 62: * Master Control Status Block (MCSB)
! 63: */
! 64:
! 65: #define MCSB_MSR 0x000000 /* master status register */
! 66: #define M_MSR_QFC 0x0004 /* queue flush complete */
! 67: #define M_MSR_BOK 0x0002 /* board OK */
! 68: #define M_MSR_CNA 0x0001 /* controller not available */
! 69: #define MCSB_MCR 0x000002 /* master control register */
! 70: #define M_MCR_SFEN 0x2000 /* sysfail enable */
! 71: #define M_MCR_RES 0x1000 /* reset controller */
! 72: #define M_MCR_FLQ 0x0800 /* flush queue */
! 73: #define M_MCR_FLQR 0x0004 /* flush queue and report */
! 74: #define M_MCR_SQM 0x0001 /* start queue mode */
! 75: #define MCSB_IQAR 0x000004 /* interrupt on queue avail */
! 76: #define M_IQAR_IQEA 0x8000 /* interrupt on queue entry avail */
! 77: #define M_IQAR_IQEH 0x4000 /* interrupt on queue half empty */
! 78: #define M_IQAR_ILVL 0x0700 /* interrupt lvl on queue available */
! 79: #define M_IQAR_IVCT 0x00ff /* interrupt vector on queue avail */
! 80: #define MCSB_QHDP 0x000006 /* queue head pointer */
! 81: #define MCSB_THAW 0x000008 /* thaw work queue */
! 82: #define M_THAW_TWQN 0xff00 /* thaw work queue number */
! 83: #define M_THAW_TWQE 0x0001 /* thaw work queue enable */
! 84: #define MCSB_SIZE 0x000010
! 85:
! 86: /*
! 87: * Host Semaphore Block (HSB)
! 88: */
! 89:
! 90: #define HSB_INITQ 0x000000 /* init MCE flag */
! 91: #define HSB_WORKQ 0x000002 /* work queue number */
! 92: #define HSB_MAGIC 0x000004 /* magic word */
! 93: #define HSB_SIZE 0x000008
! 94:
! 95: /*
! 96: * Controller Initialization Block (CIB)
! 97: */
! 98:
! 99: #define CIB_NCQE 0x000000 /* number of CQE */
! 100: #define CIB_BURST 0x000002 /* DMA burst count */
! 101: #define CIB_NVECT 0x000004 /* normal completion vector */
! 102: #define CIB_EVECT 0x000006 /* error completion vector */
! 103: #define M_VECT_ILVL 0x0700 /* Interrupt Level mask */
! 104: #define M_VECT_IVCT 0x00ff /* Interrupt Vector mask */
! 105: #define CIB_PID 0x000008 /* primary scsi bus id */
! 106: #define CIB_SID 0x00000a /* secondary scsi bus id */
! 107: #define M_PSID_DFT 0x0008 /* default ID enable */
! 108: #define M_PSID_ID 0x0007 /* primary/secondary SCSI ID */
! 109: #define CIB_CRBO 0x00000c /* CRB offset */
! 110: #define CIB_SELECT 0x00000e /* selection timeout in ms */
! 111: #define CIB_WQTIMO 0x000012 /* work queue timeout in 256ms */
! 112: #define CIB_VMETIMO 0x000016 /* VME timeout in 32ms */
! 113: #define CIB_OBMT 0x00001e /* offboard CRB mtype/xfer type/ad mod */
! 114: #define CIB_OBADDR 0x000020 /* host mem address for offboard CRB */
! 115: #define CIB_ERR_FLGS 0x000024 /* error recovery flags */
! 116: #define M_ERRFLGS_FOSR 0x0001 /* Freeze on SCSI bus reset */
! 117: #define M_ERRFLGS_RIN 0x0002 /* SCSI bus reset interrupt */
! 118: #define M_ERRFLGS_RSE 0x0004 /* Report COUGAR SCSI errors */
! 119: #define CIB_SBRIV 0x00002a /* scsi bus reset interrupt vector */
! 120: #define CIB_SOF0 0x00002c /* synchronous offset (bus 0) */
! 121: #define CIB_SRATE0 0x00002d /* sync negotiation rate (bus 0) */
! 122: #define CIB_SOF1 0x00002e /* synchronous offset (bus 0) */
! 123: #define CIB_SRATE1 0x00002f /* sync negotiation rate (bus 0) */
! 124: #define CIB_SIZE 0x000030
! 125:
! 126: /*
! 127: * Command Queue Entry (CQE)
! 128: */
! 129:
! 130: #define CQE_QECR 0x000000 /* queue entry control reg */
! 131: #define M_QECR_IOPB 0x0f00 /* IOPB type (must be zero) */
! 132: #define M_QECR_HPC 0x0004 /* High Priority command */
! 133: #define M_QECR_AA 0x0002 /* abort acknowledge */
! 134: #define M_QECR_GO 0x0001 /* Go/Busy */
! 135: #define CQE_IOPB_ADDR 0x000002 /* IOPB address */
! 136: #define CQE_CTAG 0x000004 /* command tag */
! 137: #define CQE_IOPB_LENGTH 0x000008 /* IOPB length */
! 138: #define CQE_WORK_QUEUE 0x000009 /* work queue number */
! 139: #define CQE_SIZE 0x00000c
! 140:
! 141: /*
! 142: * Command Response Block (CRB)
! 143: */
! 144:
! 145: #define CRB_CRSW 0x000000 /* status word */
! 146: #define M_CRSW_SE 0x0800 /* SCSI error (COUGAR) */
! 147: #define M_CRSW_RST 0x0400 /* SCSI Bus reset (COUGAR) */
! 148: #define M_CRSW_SC 0x0080 /* status change */
! 149: #define M_CRSW_CQA 0x0040 /* Command queue entry available */
! 150: #define M_CRSW_QMS 0x0020 /* queue mode started */
! 151: #define M_CRSW_AQ 0x0010 /* abort queue */
! 152: #define M_CRSW_EX 0x0008 /* exception */
! 153: #define M_CRSW_ER 0x0004 /* error */
! 154: #define M_CRSW_CC 0x0002 /* command complete */
! 155: #define M_CRSW_CRBV 0x0001 /* cmd response block valid/clear */
! 156: #define CRB_CTAG 0x000004 /* command tag */
! 157: #define CRB_IOPB_LENGTH 0x000008 /* IOPB length */
! 158: #define CRB_WORK_QUEUE 0x000009 /* work queue number */
! 159: #define CRB_SIZE 0x00000c
! 160:
! 161: /*
! 162: * Controller Error Vector Status Block (CEVSB)
! 163: * This is a variation of the CRB, _but larger_.
! 164: */
! 165:
! 166: #define CONTROLLER_ERROR 0x0085
! 167: #define NR_SCSI_ERROR 0x0885
! 168:
! 169: #define CEVSB_CRSW 0x000000 /* status word */
! 170: #define CEVSB_TYPE 0x000002 /* IOPB type */
! 171: #define CEVSB_CTAG 0x000004 /* command tag */
! 172: #define CEVSB_IOPB_LENGTH 0x000008 /* IOPB length */
! 173: #define CEVSB_WORK_QUEUE 0x000009 /* work queue number */
! 174: #define CEVSB_ERROR 0x00000d /* error code */
! 175: #define CEVSB_ERR_TYPE 0xc0 /* IOPB type error */
! 176: #define CEVSB_ERR_TO 0xc1 /* IOPB timeout error */
! 177: #define CEVSB_ERR_TR 0x82 /* Target Reconnect, no IOPB */
! 178: #define CEVSB_ERR_OF 0x83 /* Overflow */
! 179: #define CEVSB_ERR_BD 0x84 /* Bad direction */
! 180: #define CEVSB_ERR_NR 0x86 /* Non-Recoverabl Error */
! 181: #define CEVSB_ERR_PANIC 0xff /* Board Painc!!! */
! 182: #define CEVSB_AUXERR 0x00000e /* cougar error code */
! 183: #define CEVSB_SIZE 0x000010
! 184:
! 185: /*
! 186: * Configuration Status Block (CSB)
! 187: */
! 188:
! 189: #define CSB_TYPE 0x000000 /* jaguar/cougar */
! 190: #define COUGAR 0x4220
! 191: #define JAGUAR 0x0000
! 192: #define CSB_PCODE 0x000003 /* product code */
! 193: #define CSB_PVAR 0x000009 /* product variation */
! 194: #define CSB_FREV 0x00000d /* firmware revision level */
! 195: #define CSB_FDATE 0x000012 /* firmware release date */
! 196: #define CSB_SSIZE 0x00001a /* system memory size in KB */
! 197: #define CSB_BSIZE 0x00001c /* buffer memory size in KB */
! 198: #define CSB_PFECID 0x000020 /* primary bus FEC id */
! 199: #define CSB_SFECID 0x000021 /* secondary bus FEC id */
! 200: #define CSB_PID 0x000022 /* primary bus id */
! 201: #define CSB_SID 0x000023 /* secondary bus id */
! 202: #define CSB_LPDS 0x000024 /* last primary device selected */
! 203: #define CSB_LSDS 0x000025 /* last secondary device selected */
! 204: #define CSB_PPS 0x000026 /* primary phase sense */
! 205: #define CSB_SPS 0x000027 /* secondary phase sense */
! 206: #define CSB_DBID 0x000029 /* daughter board id */
! 207: #define DBID_SCSI2 0x02 /* modern SCSI ??? */
! 208: #define DBID_PRINTER 0x04 /* printer daughter board */
! 209: #define DBID_SCSI 0x06 /* SCSI daugter board */
! 210: #define DBID_NONE 0x07 /* no daughter board */
! 211: #define CSB_SDS 0x00002b /* software DIP switch */
! 212: #define CSB_FWQR 0x00002e /* frozen work queues register */
! 213: #define CSB_SIZE 0x000078
! 214:
! 215: /*
! 216: * IOPB Format (IOPB)
! 217: */
! 218:
! 219: #define IOPB_CMD 0x000000 /* command code */
! 220: #define IOPB_OPTION 0x000002 /* option word */
! 221: #define M_OPT_HEAD_TAG 0x3000 /* head of queue command queue tag */
! 222: #define M_OPT_ORDERED_TAG 0x2000 /* order command queue tag */
! 223: #define M_OPT_SIMPLE_TAG 0x1000 /* simple command queue tag */
! 224: #define M_OPT_GO_WIDE 0x0800 /* use WIDE transfers */
! 225: #define M_OPT_DIR 0x0100 /* VME direction bit */
! 226: #define M_OPT_SG_BLOCK 0x0008 /* scatter/gather in 512 byte blocks */
! 227: #define M_OPT_SS 0x0004 /* Suppress synchronous transfer */
! 228: #define M_OPT_SG 0x0002 /* scatter/gather bit */
! 229: #define M_OPT_IE 0x0001 /* Interrupt enable */
! 230: #define IOPB_STATUS 0x000004 /* return status word */
! 231: #define IOPB_NVCT 0x000008 /* normal completion vector */
! 232: #define IOPB_EVCT 0x000009 /* error completion vector */
! 233: #define IOPB_LEVEL 0x00000a /* interrupt level */
! 234: #define IOPB_ADDR 0x00000e /* address type and modifier */
! 235: #define M_ADR_TRANS 0x0c00 /* transfer type */
! 236: #define M_ADR_MEMT 0x0300 /* memory type */
! 237: #define M_ADR_MOD 0x00ff /* VME address modifier */
! 238: #define M_ADR_SG_LINK 0x8000 /* Scatter/Gather Link bit */
! 239: #define IOPB_BUFF 0x000010 /* buffer address */
! 240: #define IOPB_LENGTH 0x000014 /* max transfer length */
! 241: #define IOPB_SGTTL 0x000018 /* S/G total transfer length */
! 242: #define IOPB_UNIT 0x00001e /* unit address on scsi bus */
! 243: #define M_UNIT_EXT_LUN 0xff00 /* Extended Address */
! 244: #define M_UNIT_EXT 0x0080 /* Extended Address Enable */
! 245: #define M_UNIT_BUS 0x0040 /* SCSI Bus Selection */
! 246: #define M_UNIT_LUN 0x0038 /* Logical Unit Number */
! 247: #define M_UNIT_ID 0x0007 /* SCSI Device ID */
! 248: #define IOPB_SCSI_DATA 0x000020 /* SCSI words for passthrough */
! 249: #define IOPB_SHORT_SIZE 0x000020
! 250: #define IOPB_LONG_SIZE 0x000040
! 251:
! 252: /*
! 253: * Initialize Work Queue Command Format (WQCF)
! 254: * This is a specific case of IOPB.
! 255: */
! 256:
! 257: #define WQCF_CMD 0x000000 /* command code */
! 258: #define M_WOPT_IWQ 0x8000 /* initialize work queue */
! 259: #define M_WOPT_PE 0x0008 /* parity check enable */
! 260: #define M_WOPT_FE 0x0004 /* freeze on error enable */
! 261: #define M_WOPT_TM 0x0002 /* target mode enable */
! 262: #define M_WOPT_AE 0x0001 /* abort enable */
! 263: #define WQCF_OPTION 0x000002 /* option word */
! 264: #define WQCF_STATUS 0x000004 /* return status word */
! 265: #define WQCF_NVCT 0x000008 /* normal completion vector */
! 266: #define WQCF_EVCT 0x000009 /* error completion vector */
! 267: #define WQCF_ILVL 0x00000a /* interrupt level */
! 268: #define WQCF_WORKQ 0x00001c /* work queue number */
! 269: #define WQCF_WOPT 0x00001e /* work queue options */
! 270: #define WQCF_SLOTS 0x000020 /* # of slots in work queues */
! 271: #define WQCF_CMDTO 0x000024 /* command timeout */
! 272:
! 273: /*
! 274: * SCSI Reset Command Format (SRCF)
! 275: * This is a specific case of IOPB.
! 276: */
! 277:
! 278: #define SRCF_CMD 0x000000 /* command code */
! 279: #define SRCF_OPTION 0x000002 /* option word */
! 280: #define SRCF_STATUS 0x000004 /* return status word */
! 281: #define SRCF_NVCT 0x000008 /* normal completion vector */
! 282: #define SRCF_EVCT 0x000009 /* error completion vector */
! 283: #define SRCF_ILVL 0x00000a /* interrupt level */
! 284: #define SRCF_BUSID 0x00001c /* scsi bus id to reset */
! 285:
! 286: /*
! 287: * Device Reinitialize Command Format (DRCF)
! 288: * This is a specific case of IOPB.
! 289: */
! 290:
! 291: #define DRCF_CMD 0x000000 /* command code */
! 292: #define DRCF_OPTION 0x000002 /* option word */
! 293: #define DRCF_STATUS 0x000004 /* return status word */
! 294: #define DRCF_NVCT 0x000008 /* normal completion vector */
! 295: #define DRCF_EVCT 0x000009 /* error completion vector */
! 296: #define DRCF_ILVL 0x00000a /* interrupt level */
! 297: #define DRCF_UNIT 0x00001e /* unit address */
! 298:
! 299: /*
! 300: * Short I/O memory layout
! 301: */
! 302:
! 303: #define S_SHORTIO 0x000800
! 304:
! 305: #define sh_MCSB (0)
! 306: #define sh_MCE (sh_MCSB + MCSB_SIZE)
! 307: #define sh_CQE(x) (sh_MCE + CQE_SIZE + CQE_SIZE * (x))
! 308: #define sh_IOPB(x) (sh_CQE(NUM_CQE) + IOPB_LONG_SIZE * (x))
! 309: #define sh_MCE_IOPB (sh_IOPB(NUM_IOPB))
! 310: #define sh_CIB (sh_MCE_IOPB + IOPB_LONG_SIZE)
! 311:
! 312: #define sh_CSS (S_SHORTIO - CSB_SIZE)
! 313: #define sh_RET_IOPB (sh_CSS - IOPB_LONG_SIZE)
! 314: #define sh_CRB (sh_RET_IOPB - CRB_SIZE)
! 315: #define sh_CEVSB sh_CRB
! 316: #define sh_HSB (sh_CRB - HSB_SIZE)
! 317:
! 318: #if (sh_CIB + CIB_SIZE > sh_HSB)
! 319: #error invalid memory layout
! 320: #endif
! 321:
! 322: #define SELECTION_TIMEOUT 250 /* milliseconds */
! 323: #define VME_BUS_TIMEOUT 15 /* units of 30ms */
! 324: #define M328_INFINITE_TIMEOUT 0 /* wait forever */
! 325:
! 326: /*
! 327: * IOPB command codes
! 328: */
! 329:
! 330: #define IOPB_PASSTHROUGH 0x20 /* SCSI passthrough commands */
! 331: #define IOPB_PASSTHROUGH_EXT 0x21 /* SCSI passthrough extended */
! 332: #define IOPB_RESET 0x22 /* reset bus */
! 333:
! 334: #define CNTR_DIAG 0x40 /* perform diagnostics */
! 335: #define CNTR_INIT 0x41 /* initialize controller */
! 336: #define CNTR_INIT_WORKQ 0x42 /* initialize work queue */
! 337: #define CNTR_DUMP_INIT 0x43 /* dump initialization parameters */
! 338: #define CNTR_DUMP_WORDQ 0x44 /* dump work queue parameters */
! 339: #define CNTR_CANCEL_IOPB 0x48 /* cancel command tag */
! 340: #define CNTR_FLUSH_WORKQ 0x49 /* flush work queue */
! 341: #define CNTR_DEV_REINIT 0x4c /* reinitialize device */
! 342: #define CNTR_ISSUE_ABORT 0x4e /* abort has been issued */
! 343: #define CNTR_DOWNLOAD_FIRMWARE 0x4f /* download firmware (COUGAR) */
! 344:
! 345: #define IOPB_UNIT_VALUE(bus, target, lun) \
! 346: (((bus) << 6) | ((lun) << 3) | (target & 7))
! 347:
! 348: /*
! 349: * Memory types
! 350: */
! 351:
! 352: #define MEMT_16BIT 1 /* 16 bit memory type */
! 353: #define MEMT_32BIT 2 /* 32 bit memory type */
! 354: #define MEMT_SHIO 3 /* short I/O memory type */
! 355: #define MEMTYPE MEMT_32BIT
! 356:
! 357: /*
! 358: * Transfer types
! 359: */
! 360:
! 361: #define TT_NORMAL 0 /* normal mode transfers */
! 362: #define TT_BLOCK 1 /* block mode transfers */
! 363: #define TT_DISABLE_INC_ADDR 2 /* disable incrementing addresses */
! 364: #define TT_D64 3 /* D64 mode transfers */
! 365:
! 366: /*
! 367: * Error codes
! 368: */
! 369:
! 370: #define MACSI_GOOD_STATUS 0x00
! 371: #define MACSI_QUEUE_FULL 0x01
! 372: #define MACSI_CMD_CODE_ERR 0x04
! 373: #define MACSI_QUEUE_NUMBER_ERR 0x05
! 374:
! 375: #define RESET_BUS_STATUS 0x11 /* SCSI bus reset IOPB forced this */
! 376: #define NO_SECONDARY_PORT 0x12 /* second SCSI bus not available */
! 377: #define SCSI_DEVICE_IS_RESET 0x14
! 378: #define CMD_ABORT_BY_RESET 0x15
! 379:
! 380: #define VME_BUS_ERROR 0x20
! 381: #define VME_BUS_ACC_TIMEOUT 0x21
! 382: #define VME_BUS_BAD_ADDR 0x23
! 383: #define VME_BUS_BAD_MEM_TYPE 0x24
! 384: #define VME_BUS_BAD_COUNT 0x25
! 385: #define VME_BUS_FETCH_ERROR 0x26
! 386: #define VME_BUS_FETCH_TIMEOUT 0x27
! 387: #define VME_BUS_POST_ERROR 0x28
! 388: #define VME_BUS_POST_TIMEOUT 0x29
! 389: #define VME_BUS_BAD_FETCH_ADDR 0x2a
! 390: #define VME_BUS_BAD_POST_ADDR 0x2b
! 391: #define VME_BUS_SG_FETCH 0x2c
! 392: #define VME_BUS_SG_TIMEOUT 0x2d
! 393: #define VME_BUS_SG_COUNT 0x2e
! 394:
! 395: #define SCSI_SELECTION_TO 0x30
! 396: #define SCSI_DISCONNECT_TIMEOUT 0x31
! 397: #define SCSI_ABNORMAL_SEQ 0x32
! 398: #define SCSI_DISCONNECT_ERR 0x33
! 399: #define SCSI_XFER_EXCEPTION 0x34
! 400: #define SCSI_PARITY_ERROR 0x35
! 401:
! 402: #define DEVICE_NO_IOPB 0x82
! 403: #define IOPB_CTLR_EXH 0x83
! 404: #define IOPB_DIR_ERROR 0x84
! 405: #define COUGAR_ERROR 0x86
! 406: #define MACSI_INCORRECT_HW 0x90
! 407: #define MACSI_ILGL_IOPB_VAL 0x92
! 408: #define MACSI_ILLEGAL_IMAGE 0x9c
! 409: #define IOPB_TYPE_ERR 0xc0 /* IOPB type not 0 */
! 410: #define IOPB_TIMEOUT 0xc1
! 411:
! 412: #define COUGAR_PANIC 0xff
! 413:
! 414: #define MACSI_INVALID_TIMEOUT 0x843
! 415:
! 416: /*
! 417: * VME addressing modes
! 418: */
! 419:
! 420: #define ADRM_STD_S_P 0x3e /* standard supervisory program */
! 421: #define ADRM_STD_S_D 0x3d /* standard supervisory data */
! 422: #define ADRM_STD_N_P 0x3a /* standard normal program */
! 423: #define ADRM_STD_N_D 0x39 /* standard normal data */
! 424: #define ADRM_SHT_S_IO 0x2d /* short supervisory I/O */
! 425: #define ADRM_SHT_N_IO 0x29 /* short normal I/O */
! 426: #define ADRM_EXT_S_P 0x0e /* extended supervisory program */
! 427: #define ADRM_EXT_S_D 0x0d /* extended supervisory data */
! 428: #define ADRM_EXT_N_P 0x0a /* extended normal program */
! 429: #define ADRM_EXT_N_D 0x09 /* extended normal data */
! 430: #define ADRM_EXT_S_BM 0x0f /* extended supervisory block mode */
! 431: #define ADRM_EXT_S_D64 0x0c /* extended supervisory D64 mode */
! 432:
! 433: #define ADDR_MOD ((TT_NORMAL << 10) | (MEMTYPE << 8) | ADRM_EXT_S_D)
! 434: #define BLOCK_MOD ((TT_BLOCK << 10) | (MEMTYPE << 8) | ADRM_EXT_S_BM)
! 435: #define D64_MOD ((TT_D64 << 10) | (MEMTYPE << 8) | ADRM_EXT_S_D64)
! 436: #define SHIO_MOD ((TT_NORMAL << 10) | (MEMT_SHIO << 8) | ADRM_SHT_N_IO)
! 437:
! 438: #endif /* _MVME328_REG_H_ */
CVSweb