|
|
1.1 root 1: /*
2: *****************************************************************************
3: ** *
4: ** Copyright � 1993, 1994 *
5: ** by Digital Equipment Corporation, Maynard, Massachusetts. *
6: ** *
7: ** All Rights Reserved *
8: ** *
9: ** Permission is hereby granted to use, copy, modify and distribute *
10: ** this software and its documentation, in both source code and *
11: ** object code form, and without fee, for the purpose of distribution *
12: ** of this software or modifications of this software within products *
13: ** incorporating an integrated circuit implementing Digital's AXP *
14: ** architecture, regardless of the source of such integrated circuit, *
15: ** provided that the above copyright notice and this permission notice *
16: ** appear in all copies, and that the name of Digital Equipment *
17: ** Corporation not be used in advertising or publicity pertaining to *
18: ** distribution of the document or software without specific, written *
19: ** prior permission. *
20: ** *
21: ** Digital Equipment Corporation disclaims all warranties and/or *
22: ** guarantees with regard to this software, including all implied *
23: ** warranties of fitness for a particular purpose and merchantability, *
24: ** and makes no representations regarding the use of, or the results *
25: ** of the use of, the software and documentation in terms of correctness, *
26: ** accuracy, reliability, currentness or otherwise; and you rely on *
27: ** the software, documentation and results solely at your own risk. *
28: ** *
29: ** AXP is a trademark of Digital Equipment Corporation. *
30: ** *
31: *****************************************************************************
32: */
33:
34: /*
35: ** Seg0 and Seg1 Virtual Address (VA) Format
36: **
37: ** Loc Size Name Function
38: ** ----- ---- ---- ---------------------------------
39: ** <42:33> 10 SEG1 First level page table offset
40: ** <32:23> 10 SEG2 Second level page table offset
41: ** <22:13> 10 SEG3 Third level page table offset
42: ** <12:00> 13 OFFSET Byte within page offset
43: */
44:
45: #define VA_V_SEG1 33
46: #define VA_M_SEG1 (0x3FF<<VA_V_SEG1)
47: #define VA_V_SEG2 23
48: #define VA_M_SEG2 (0x3FF<<VA_V_SEG2)
49: #define VA_V_SEG3 13
50: #define VA_M_SEG3 (0x3FF<<VA_V_SEG3)
51: #define VA_V_OFFSET 0
52: #define VA_M_OFFSET 0x1FFF
53:
54: /*
55: ** Virtual Address Options: 8K byte page size
56: */
57:
58: #define VA_S_SIZE 43
59: #define VA_S_OFF 13
60: #define VA_S_SEG 10
61: #define VA_S_PAGE_SIZE 8192
62:
63: /*
64: ** Page Table Entry (PTE) Format
65: **
66: ** Extent Size Name Function
67: ** ------ ---- ---- ---------------------------------
68: ** <63:32> 32 PFN Page Frame Number
69: ** <31:16> 16 SW Reserved for software
70: ** <15:14> 2 RSV0 Reserved for hardware SBZ
71: ** <13> 1 UWE User Write Enable
72: ** <12> 1 KWE Kernel Write Enable
73: ** <11:10> 2 RSV1 Reserved for hardware SBZ
74: ** <9> 1 URE User Read Enable
75: ** <8> 1 KRE Kernel Read Enable
76: ** <7> 1 RSV2 Reserved for hardware SBZ
77: ** <6:5> 2 GH Granularity Hint
78: ** <4> 1 ASM Address Space Match
79: ** <3> 1 FOE Fault On Execute
80: ** <2> 1 FOW Fault On Write
81: ** <1> 1 FOR Fault On Read
82: ** <0> 1 V Valid
83: */
84:
85: #define PTE_V_PFN 32
86: #define PTE_M_PFN 0xFFFFFFFF00000000
87: #define PTE_V_SW 16
88: #define PTE_M_SW 0x00000000FFFF0000
89: #define PTE_V_UWE 13
90: #define PTE_M_UWE (1<<PTE_V_UWE)
91: #define PTE_V_KWE 12
92: #define PTE_M_KWE (1<<PTE_V_KWE)
93: #define PTE_V_URE 9
94: #define PTE_M_URE (1<<PTE_V_URE)
95: #define PTE_V_KRE 8
96: #define PTE_M_KRE (1<<PTE_V_KRE)
97: #define PTE_V_GH 5
98: #define PTE_M_GH (3<<PTE_V_GH)
99: #define PTE_V_ASM 4
100: #define PTE_M_ASM (1<<PTE_V_ASM)
101: #define PTE_V_FOE 3
102: #define PTE_M_FOE (1<<PTE_V_FOE)
103: #define PTE_V_FOW 2
104: #define PTE_M_FOW (1<<PTE_V_FOW)
105: #define PTE_V_FOR 1
106: #define PTE_M_FOR (1<<PTE_V_FOR)
107: #define PTE_V_VALID 0
108: #define PTE_M_VALID (1<<PTE_V_VALID)
109:
110: #define PTE_M_KSEG 0x1111
111: #define PTE_M_PROT 0x3300
112:
113: /*
114: ** System Entry Instruction Fault (entIF) Constants:
115: */
116:
117: #define IF_K_BPT 0x0
118: #define IF_K_BUGCHK 0x1
119: #define IF_K_GENTRAP 0x2
120: #define IF_K_FEN 0x3
121: #define IF_K_OPCDEC 0x4
122:
123: /*
124: ** System Entry Hardware Interrupt (entInt) Constants:
125: */
126:
127: #define INT_K_IP 0x0
128: #define INT_K_CLK 0x1
129: #define INT_K_MCHK 0x2
130: #define INT_K_DEV 0x3
131: #define INT_K_PERF 0x4
132:
133: /*
134: ** System Entry MM Fault (entMM) Constants:
135: */
136:
137: #define MM_K_TNV 0x0
138: #define MM_K_ACV 0x1
139: #define MM_K_FOR 0x2
140: #define MM_K_FOE 0x3
141: #define MM_K_FOW 0x4
142:
143: /*
144: ** Process Control Block (PCB) Offsets:
145: */
146:
147: #define PCB_Q_KSP 0x0000
148: #define PCB_Q_USP 0x0008
149: #define PCB_Q_PTBR 0x0010
150: #define PCB_L_PCC 0x0018
151: #define PCB_L_ASN 0x001C
152: #define PCB_Q_UNIQUE 0x0020
153: #define PCB_Q_FEN 0x0028
154: #define PCB_Q_RSV0 0x0030
155: #define PCB_Q_RSV1 0x0038
156:
157: /*
158: ** Processor Status Register (PS) Bit Summary
159: **
160: ** Extent Size Name Function
161: ** ------ ---- ---- ---------------------------------
162: ** <3> 1 CM Current Mode
163: ** <2:0> 3 IPL Interrupt Priority Level
164: **/
165:
166: #define PS_V_CM 3
167: #define PS_M_CM (1<<PS_V_CM)
168: #define PS_V_IPL 0
169: #define PS_M_IPL (7<<PS_V_IPL)
170:
171: #define PS_K_KERN (0<<PS_V_CM)
172: #define PS_K_USER (1<<PS_V_CM)
173:
174: #define IPL_K_ZERO 0x0
175: #define IPL_K_SW0 0x1
176: #define IPL_K_SW1 0x2
177: #define IPL_K_DEV0 0x3
178: #define IPL_K_DEV1 0x4
179: #define IPL_K_CLK 0x5
180: #define IPL_K_IP 0x6
181: #define IPL_K_RT 0x6
182: #define IPL_K_PERF 0x6
183: #define IPL_K_PFAIL 0x6
184: #define IPL_K_MCHK 0x7
185:
186: #define IPL_K_LOW 0x0
187: #define IPL_K_HIGH 0x7
188:
189: /*
190: ** SCB Offset Definitions:
191: */
192:
193: #define SCB_Q_FEN 0x0010
194: #define SCB_Q_ACV 0x0080
195: #define SCB_Q_TNV 0x0090
196: #define SCB_Q_FOR 0x00A0
197: #define SCB_Q_FOW 0x00B0
198: #define SCB_Q_FOE 0x00C0
199: #define SCB_Q_ARITH 0x0200
200: #define SCB_Q_KAST 0x0240
201: #define SCB_Q_EAST 0x0250
202: #define SCB_Q_SAST 0x0260
203: #define SCB_Q_UAST 0x0270
204: #define SCB_Q_UNALIGN 0x0280
205: #define SCB_Q_BPT 0x0400
206: #define SCB_Q_BUGCHK 0x0410
207: #define SCB_Q_OPCDEC 0x0420
208: #define SCB_Q_ILLPAL 0x0430
209: #define SCB_Q_TRAP 0x0440
210: #define SCB_Q_CHMK 0x0480
211: #define SCB_Q_CHME 0x0490
212: #define SCB_Q_CHMS 0x04A0
213: #define SCB_Q_CHMU 0x04B0
214: #define SCB_Q_SW0 0x0500
215: #define SCB_Q_SW1 0x0510
216: #define SCB_Q_SW2 0x0520
217: #define SCB_Q_SW3 0x0530
218: #define SCB_Q_SW4 0x0540
219: #define SCB_Q_SW5 0x0550
220: #define SCB_Q_SW6 0x0560
221: #define SCB_Q_SW7 0x0570
222: #define SCB_Q_SW8 0x0580
223: #define SCB_Q_SW9 0x0590
224: #define SCB_Q_SW10 0x05A0
225: #define SCB_Q_SW11 0x05B0
226: #define SCB_Q_SW12 0x05C0
227: #define SCB_Q_SW13 0x05D0
228: #define SCB_Q_SW14 0x05E0
229: #define SCB_Q_SW15 0x05F0
230: #define SCB_Q_CLOCK 0x0600
231: #define SCB_Q_INTER 0x0610
232: #define SCB_Q_SYSERR 0x0620
233: #define SCB_Q_PROCERR 0x0630
234: #define SCB_Q_PWRFAIL 0x0640
235: #define SCB_Q_PERFMON 0x0650
236: #define SCB_Q_SYSMCHK 0x0660
237: #define SCB_Q_PROCMCHK 0x0670
238: #define SCB_Q_PASSREL 0x0680
239:
240: /*
241: ** Stack Frame (FRM) Offsets:
242: **
243: ** There are two types of system entries for OSF/1 - those for the
244: ** callsys CALL_PAL function and those for exceptions and interrupts.
245: ** Both entry types use the same stack frame layout. The stack frame
246: ** contains space for the PC, the PS, the saved GP, and the saved
247: ** argument registers a0, a1, and a2. On entry, SP points to the
248: ** saved PS.
249: */
250:
251: #define FRM_Q_PS 0x0000
252: #define FRM_Q_PC 0x0008
253: #define FRM_Q_GP 0x0010
254: #define FRM_Q_A0 0x0018
255: #define FRM_Q_A1 0x0020
256: #define FRM_Q_A2 0x0028
257:
258: #define FRM_K_SIZE 48
259:
260: /*
261: ** Halt Codes:
262: */
263:
264: #define HLT_K_RESET 0x0000
265: #define HLT_K_HW_HALT 0x0001
266: #define HLT_K_KSP_INVAL 0x0002
267: #define HLT_K_SCBB_INVAL 0x0003
268: #define HLT_K_PTBR_INVAL 0x0004
269: #define HLT_K_SW_HALT 0x0005
270: #define HLT_K_DBL_MCHK 0x0006
271: #define HLT_K_MCHK_FROM_PAL 0x0007
272:
273: /*
274: ** Machine Check Codes:
275: */
276:
277: #define MCHK_K_TPERR 0x0080
278: #define MCHK_K_TCPERR 0x0082
279: #define MCHK_K_HERR 0x0084
280: #define MCHK_K_ECC_C 0x0086
281: #define MCHK_K_ECC_NC 0x0088
282: #define MCHK_K_UNKNOWN 0x008A
283: #define MCHK_K_CACKSOFT 0x008C
284: #define MCHK_K_BUGCHECK 0x008E
285: #define MCHK_K_OS_BUGCHECK 0x0090
286: #define MCHK_K_DCPERR 0x0092
287: #define MCHK_K_ICPERR 0x0094
288: #define MCHK_K_RETRY_IRD 0x0096
289: #define MCHK_K_PROC_HERR 0x0098
290:
291: /*
292: ** System Machine Check Codes:
293: */
294:
295: #define MCHK_K_READ_NXM 0x0200
296: #define MCHK_K_SYS_HERR 0x0202
297:
298: /*
299: ** Machine Check Error Status Summary (MCES) Register Format
300: **
301: ** Extent Size Name Function
302: ** ------ ---- ---- ---------------------------------
303: ** <0> 1 MIP Machine check in progress
304: ** <1> 1 SCE System correctable error in progress
305: ** <2> 1 PCE Processor correctable error in progress
306: ** <3> 1 DPC Disable PCE error reporting
307: ** <4> 1 DSC Disable SCE error reporting
308: */
309:
310: #define MCES_V_MIP 0
311: #define MCES_M_MIP (1<<MCES_V_MIP)
312: #define MCES_V_SCE 1
313: #define MCES_M_SCE (1<<MCES_V_SCE)
314: #define MCES_V_PCE 2
315: #define MCES_M_PCE (1<<MCES_V_PCE)
316: #define MCES_V_DPC 3
317: #define MCES_M_DPC (1<<MCES_V_DPC)
318: #define MCES_V_DSC 4
319: #define MCES_M_DSC (1<<MCES_V_DSC)
320:
321: #define MCES_M_ALL (MCES_M_MIP | MCES_M_SCE | MCES_M_PCE | MCES_M_DPC \
322: | MCES_M_DSC)
323:
324: /*
325: ** Who-Am-I (WHAMI) Register Format
326: **
327: ** Extent Size Name Function
328: ** ------ ---- ---- ---------------------------------
329: ** <7:0> 8 ID Who-Am-I identifier
330: ** <15:8> 1 SWAP Swap PALcode flag - character 'S'
331: */
332:
333: #define WHAMI_V_SWAP 8
334: #define WHAMI_M_SWAP (1<<WHAMI_V_SWAP)
335: #define WHAMI_V_ID 0
336: #define WHAMI_M_ID 0xFF
337:
338: #define WHAMI_K_SWAP 0x53 /* Character 'S' */
339:
340: /*
341: * OSF/1 PAL-code-imposed page table bits
342: */
343: #define _PAGE_VALID 0x0001
344: #define _PAGE_FOR 0x0002 /* used for page protection (fault on read) */
345: #define _PAGE_FOW 0x0004 /* used for page protection (fault on write) */
346: #define _PAGE_FOE 0x0008 /* used for page protection (fault on exec) */
347: #define _PAGE_ASM 0x0010
348: #define _PAGE_KRE 0x0100 /* xxx - see below on the "accessed" bit */
349: #define _PAGE_URE 0x0200 /* xxx */
350: #define _PAGE_KWE 0x1000 /* used to do the dirty bit in software */
351: #define _PAGE_UWE 0x2000 /* used to do the dirty bit in software */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.