|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1992 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: cl_data.h ! 8: ! 9: Abstract: ! 10: ! 11: This module contains all the global data used by the cirrus driver. ! 12: ! 13: Environment: ! 14: ! 15: Kernel mode ! 16: ! 17: Revision History: ! 18: ! 19: ! 20: --*/ ! 21: ! 22: // ! 23: // This structure describes to which ports access is required. ! 24: // ! 25: ! 26: #define NUM_VGA_ACCESS_RANGES 3 ! 27: ! 28: VIDEO_ACCESS_RANGE VgaAccessRange[] = { ! 29: { ! 30: VGA_BASE_IO_PORT, 0x00000000, // 64-bit linear base address ! 31: // of range ! 32: VGA_START_BREAK_PORT - VGA_BASE_IO_PORT + 1, // # of ports ! 33: 1, // range is in I/O space ! 34: 1, // range should be visible ! 35: 0 // range should be shareable ! 36: }, ! 37: { ! 38: VGA_END_BREAK_PORT, 0x00000000, ! 39: VGA_MAX_IO_PORT - VGA_END_BREAK_PORT + 1, ! 40: 1, ! 41: 1, ! 42: 0 ! 43: }, ! 44: { ! 45: 0x000A0000, 0x00000000, ! 46: 0x00020000, ! 47: 0, ! 48: 1, ! 49: 0 ! 50: } ! 51: }; ! 52: ! 53: ! 54: // ! 55: // Validator Port list. ! 56: // This structure describes all the ports that must be hooked out of the V86 ! 57: // emulator when a DOS app goes to full-screen mode. ! 58: // The structure determines to which routine the data read or written to a ! 59: // specific port should be sent. ! 60: // ! 61: ! 62: #define VGA_NUM_EMULATOR_ACCESS_ENTRIES 6 ! 63: ! 64: EMULATOR_ACCESS_ENTRY VgaEmulatorAccessEntries[] = { ! 65: ! 66: // ! 67: // Traps for byte OUTs. ! 68: // ! 69: ! 70: { ! 71: 0x000003b0, // range start I/O address ! 72: 0xC, // range length ! 73: Uchar, // access size to trap ! 74: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, // types of access to trap ! 75: FALSE, // does not support string accesses ! 76: (PVOID)VgaValidatorUcharEntry // routine to which to trap ! 77: }, ! 78: ! 79: { ! 80: 0x000003c0, // range start I/O address ! 81: 0x20, // range length ! 82: Uchar, // access size to trap ! 83: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, // types of access to trap ! 84: FALSE, // does not support string accesses ! 85: (PVOID)VgaValidatorUcharEntry // routine to which to trap ! 86: }, ! 87: ! 88: // ! 89: // Traps for word OUTs. ! 90: // ! 91: ! 92: { ! 93: 0x000003b0, ! 94: 0x06, ! 95: Ushort, ! 96: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, ! 97: FALSE, ! 98: (PVOID)VgaValidatorUshortEntry ! 99: }, ! 100: ! 101: { ! 102: 0x000003c0, ! 103: 0x10, ! 104: Ushort, ! 105: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, ! 106: FALSE, ! 107: (PVOID)VgaValidatorUshortEntry ! 108: }, ! 109: ! 110: // ! 111: // Traps for dword OUTs. ! 112: // ! 113: ! 114: { ! 115: 0x000003b0, ! 116: 0x03, ! 117: Ulong, ! 118: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, ! 119: FALSE, ! 120: (PVOID)VgaValidatorUlongEntry ! 121: }, ! 122: ! 123: { ! 124: 0x000003c0, ! 125: 0x08, ! 126: Ulong, ! 127: EMULATOR_READ_ACCESS | EMULATOR_WRITE_ACCESS, ! 128: FALSE, ! 129: (PVOID)VgaValidatorUlongEntry ! 130: } ! 131: ! 132: }; ! 133: ! 134: ! 135: // ! 136: // Used to trap only the sequncer and the misc output registers ! 137: // ! 138: ! 139: #define NUM_MINIMAL_VGA_VALIDATOR_ACCESS_RANGE 4 ! 140: ! 141: VIDEO_ACCESS_RANGE MinimalVgaValidatorAccessRange[] = { ! 142: { ! 143: VGA_BASE_IO_PORT, 0x00000000, ! 144: VGA_START_BREAK_PORT - VGA_BASE_IO_PORT + 1, ! 145: 1, ! 146: 1, // <- enable range IOPM so that it is not trapped. ! 147: 0 ! 148: }, ! 149: { ! 150: VGA_END_BREAK_PORT, 0x00000000, ! 151: VGA_MAX_IO_PORT - VGA_END_BREAK_PORT + 1, ! 152: 1, ! 153: 1, ! 154: 0 ! 155: }, ! 156: { ! 157: VGA_BASE_IO_PORT + MISC_OUTPUT_REG_WRITE_PORT, 0x00000000, ! 158: 0x00000001, ! 159: 1, ! 160: 0, ! 161: 0 ! 162: }, ! 163: { ! 164: VGA_BASE_IO_PORT + SEQ_ADDRESS_PORT, 0x00000000, ! 165: 0x00000002, ! 166: 1, ! 167: 0, ! 168: 0 ! 169: } ! 170: }; ! 171: ! 172: // ! 173: // Used to trap all registers ! 174: // ! 175: ! 176: #define NUM_FULL_VGA_VALIDATOR_ACCESS_RANGE 2 ! 177: ! 178: VIDEO_ACCESS_RANGE FullVgaValidatorAccessRange[] = { ! 179: { ! 180: VGA_BASE_IO_PORT, 0x00000000, ! 181: VGA_START_BREAK_PORT - VGA_BASE_IO_PORT + 1, ! 182: 1, ! 183: 0, // <- disable range in the IOPM so that it is trapped. ! 184: 0 ! 185: }, ! 186: { ! 187: VGA_END_BREAK_PORT, 0x00000000, ! 188: VGA_MAX_IO_PORT - VGA_END_BREAK_PORT + 1, ! 189: 1, ! 190: 0, ! 191: 0 ! 192: } ! 193: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.