|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) 1992 NeXT Computer, Inc. ! 27: * ! 28: * 8259A (PIC) Interrupt Controller definitions. ! 29: * ! 30: * HISTORY ! 31: * ! 32: * 31 May 1992 ? at NeXT ! 33: * Created. ! 34: */ ! 35: ! 36: /* ! 37: * Operation Command Words. ! 38: */ ! 39: ! 40: /* ! 41: * OCW1 - interrupt mask. ! 42: */ ! 43: typedef struct { ! 44: unsigned char ! 45: mask :8; ! 46: } intr_ocw1_t; ! 47: ! 48: /* ! 49: * OCW2 - EOI support. ! 50: */ ! 51: typedef struct { ! 52: unsigned char ! 53: level :3, ! 54: set_to_zero :2, ! 55: eoi :1, ! 56: specific :1, ! 57: rotation :1; ! 58: } intr_ocw2_t; ! 59: ! 60: /* ! 61: * OCW3 - register access, poll, smm commands. ! 62: */ ! 63: typedef struct { ! 64: unsigned char ! 65: read_reg :2, ! 66: #define INTR_OCW3_READ_IRR 2 ! 67: #define INTR_OCW3_READ_ISR 3 ! 68: poll :1, ! 69: set_to_one :2, ! 70: smm :2, ! 71: #define INTR_OCW3_RESET_SMM 2 ! 72: #define INTR_OCW3_SET_SMM 3 ! 73: :1; ! 74: } intr_ocw3_t; ! 75: ! 76: /* ! 77: * Initialization Command Words. ! 78: */ ! 79: ! 80: /* ! 81: * ICW1 - mode initialization. ! 82: */ ! 83: typedef struct { ! 84: unsigned char ! 85: ic4 :1, ! 86: no_slaves :1, ! 87: vectsz :1, ! 88: #define INTR_ICW1_VECTSZ_8 0 ! 89: #define INTR_ICW1_VECTSZ_4 1 ! 90: trig_mode :1, ! 91: #define INTR_ICW1_EDGE_TRIG 0 ! 92: #define INTR_ICW1_LEVEL_TRIG 1 ! 93: set_to_one :1, ! 94: :3; ! 95: } intr_icw1_t; ! 96: ! 97: /* ! 98: * ICW2 - interrupt vector. ! 99: */ ! 100: typedef struct { ! 101: unsigned char ! 102: vectoff :8; ! 103: } intr_icw2_t; ! 104: ! 105: /* ! 106: * ICW3 for master - slave inputs. ! 107: */ ! 108: typedef struct { ! 109: unsigned char ! 110: slave_ir :8; ! 111: } intr_icw3m_t; ! 112: ! 113: /* ! 114: * ICW3 for slave - slave priority. ! 115: */ ! 116: typedef struct { ! 117: unsigned char ! 118: slave_id :3, ! 119: :5; ! 120: } intr_icw3s_t; ! 121: ! 122: /* ! 123: * ICW4 - misc mode initialization. ! 124: */ ! 125: typedef struct { ! 126: unsigned char ! 127: pmode :1, ! 128: #define INTR_ICW4_8080_MODE 0 ! 129: #define INTR_ICW4_8086_MODE 1 ! 130: auto_eoi :1, ! 131: bufmode :2, ! 132: #define INTR_ICW4_NONBUF 0 ! 133: #define INTR_ICW4_BUF_SLAVE 2 ! 134: #define INTR_ICW4_BUF_MASTER 3 ! 135: sfnmode :1, ! 136: :3; ! 137: } intr_icw4_t; ! 138: ! 139: /* ! 140: * ELCR - EISA Edge/Level Triggered ! 141: * Control Register. ! 142: */ ! 143: typedef struct { ! 144: unsigned char ! 145: mask :8; ! 146: } intr_elcr_t; ! 147: ! 148: /* ! 149: * PIC I/O Ports. ! 150: */ ! 151: ! 152: /* ! 153: * Master device. ! 154: */ ! 155: #define INTR_PRIMARY_PORT 0x0020 ! 156: #define INTR_SECONDARY_PORT 0x0021 ! 157: #define INTR_ELCR_PORT 0x04D0 ! 158: ! 159: /* ! 160: * Slave device. ! 161: */ ! 162: #define INTR2_PRIMARY_PORT 0x00A0 ! 163: #define INTR2_SECONDARY_PORT 0x00A1 ! 164: #define INTR2_ELCR_PORT 0x04D1 ! 165: ! 166: /* ! 167: * IRQs returned for missed interrupts. ! 168: */ ! 169: #define INTR_MASTER_PHANTOM_IRQ 7 ! 170: #define INTR_SLAVE_PHANTOM_IRQ 15 ! 171: #define INTR_PHANTOM_IRQ_MASK (1 << 7)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.