|
|
1.1 root 1: /* (-lgl
2: * COHERENT Driver Kit Version 2.0
3: * Copyright (c) 1982, 1992 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * Machine dependent stuff.
8: * 8086/8088 & 286 Coherent PC/XT/AT.
9: */
10: #ifndef I8086_H
11: #define I8086_H
12:
13: /*
14: * Useful definitions.
15: */
16: #define PIC 0x20 /* 8259 command port */
17: #define PICM 0x21 /* 8259 mask port */
18: #define SPIC 0xA0 /* Slave 8259 command port */
19: #define SPICM 0xA1 /* Slave 8259 mask port */
20: #define MFTTB 0x0100 /* Trace trap bit */
21: #define MFINT 0x0200 /* Interupt enable */
22: #define MUERR 0x0002 /* Location of errno */
23:
24: /*
25: * Trap codes.
26: * Passed in the upper 8 bits of
27: * the "id" passed to "trap".
28: */
29: #define SIDIV 0 /* Divide overflow */
30: #define SISST 1 /* Single step */
31: #define SINMI 2 /* NMI (parity) */
32: #define SIBPT 3 /* Breakpoint */
33: #define SIOVF 4 /* Overflow */
34: #define SIBND 5 /* Bound */
35: #define SIOP 6 /* Invalid opcode */
36: #define SIXNP 7 /* Processor extension not available */
37: #define SIDBL 8 /* Double exception */
38: #define SIXS 9 /* Processor extension segment overrun */
39: #define SITS 10 /* Invalid task state segment */
40: #define SINP 11 /* Segment not present */
41: #define SISS 12 /* Stack segment overrun/not present */
42: #define SIGP 13 /* General protection */
43: #define SISYS 32 /* System call */
44: #define SIRAN 33 /* Random interrupt */
45: #define SIDEV 64 /* Device interrupt */
46:
47: /*
48: * The saved registers are accessed
49: * via constant offsets from the top of the
50: * user area stack. The "O" symbols, defined below,
51: * are the offsets, in words, from the initial system
52: * stack. The offsets depend on the actual save order
53: * defined by "tsave" in the assist.
54: */
55: #define regl ((int *)((char *)&u+UPASIZE))
56:
57: #define OFW -1
58: #define OCS -2
59: #define OIP -3
60: #define OID -4
61: #define OSS -5
62: #define OSP -6
63: #define ODS -7
64: #define OBX -8
65: #define OAX -9
66: #define ODX -10
67: #define OCX -11
68: #define OES -12
69: #define ORA -13
70: #define OSI -14
71: #define ODI -15
72: #define OBP -16
73:
74: /*
75: * For accessing high and low words of a long.
76: */
77: struct l {
78: int l_lo;
79: int l_hi;
80: };
81:
82: #ifdef KERNEL
83: /*
84: * Global variables.
85: */
86: extern unsigned ucs; /* User code segment */
87: extern unsigned ucl; /* Length of code segment */
88: extern unsigned uds; /* User data segment */
89: extern unsigned udl; /* Length of data segment */
90: extern char depth; /* Stack depth */
91:
92: #endif
93:
94: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.