|
|
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: #if TRUE
26: /* Additional SPR's */
27: #define sprMQ 0 /* mulx/divx extension */
28: #define sprXER 1 /* */
29: #define fromRTCU 4 /* read realtime clock */
30: #define fromRTCL 5 /* ditto */
31: #define sprLR 8 /* link register */
32: #define sprCTR 9 /* counter register */
33: #define toRTCU 20 /* write realtime clock (supervisor mode only)*/
34: #define toRTCL 21 /* ditto */
35: #define fromDEC 22 /* decrementer register */
36: #define sprPVR 287 /* processor version register */
37: #define sprMMCR0 952 /* performance monitor (604) */
38: #define sprPMC1 953 /* performance monitor (604) */
39: #define sprPMC2 954 /* performance monitor (604) */
40: #define sprSIA 955 /* performance monitor (604) */
41: #define sprMMCR1 956 /* performance monitor (Sirocco) */
42: #define sprPMC3 957 /* performance monitor (Sirocco) */
43: #define sprPMC4 958 /* performance monitor (Sirocco) */
44: #define sprSDA 959 /* performance monitor (604) */
45:
46: #define rcr0 0
47: #define rcr1 1
48: #define rcr2 2
49: #define rcr3 3
50: #define rcr4 4
51: #define rcr5 5
52: #define rcr6 6
53: #define rcr7 7
54:
55: #define lt_b 0
56: #define gt_b 1
57: #define eq_b 2
58: #define so_b 3
59:
60: /*
61: ** Register defines for EmulateUnimplimentedInstructions
62: */
63: #define dKernelDataPtr 1
64:
65: #define dInitEmulatorDataPtr 8
66: #define dInitZero 0
67:
68: #define dContextPtr 6
69: #define dContextStatFlags 7
70: #define dTmp1 8
71: #define dTmp2 9
72:
73: #define dSavedSRR0 10
74: #define dSavedSRR1 11
75: #define dSavedLR 12
76: #define dSavedCR 13
77:
78: #define dMSR_Disabled 14
79: #define dMSR_Enabled 15
80: #define dMemCtxFlags 16
81: #define dMemCmdInfo 17
82: #define dMemUpdateEA 18
83: #define dMemAddress 19
84: #define dMemDataH 20
85: #define dMemDataL 21
86: #define dMemByteCount 22
87:
88: #define dDataTemp 23
89: #define dSavedVBR 24
90: #define dMemProcPtr 25
91: #define dMemDisp dDataTemp
92:
93: #define dMemSetupInfo 26
94: #define dMemInstr 27
95: #define dRegIndex 28
96:
97: /*
98: ** Register defines for EmulateUnimplimentedInstructions
99: */
100: #define KernelDataPtr r1
101:
102: #define InitEmulatorDataPtr r8
103: #define InitZero r0
104:
105: #define ContextPtr r6
106: #define ContextStatFlags r7
107: #define Tmp1 r8
108: #define Tmp2 r9
109:
110: #define SavedSRR0 r10
111: #define SavedSRR1 r11
112: #define SavedLR r12
113: #define SavedCR r13
114:
115: #define MSR_Disabled r14
116: #define MSR_Enabled r15
117: #define MemCtxFlags r16
118: #define MemCmdInfo r17
119: #define MemUpdateEA r18
120: #define MemAddress r19
121: #define MemDataH r20
122: #define MemDataL r21
123: #define MemByteCount r22
124:
125: #define DataTemp r23
126: #define SavedVBR r24
127: #define MemProcPtr r25
128: #define MemDisp DataTemp
129:
130: #define MemSetupInfo r26
131: #define MemInstr r27
132: #define RegIndex r28
133:
134: /*
135: ** Flag Bit Definitions
136: */
137: #define b_EmulatePowerMQ 8
138: #define b_EmulatePowerRTC 9
139: #define b_EmulatePowerDEC 10
140: #define b_EmulatePowerComplex 11
141: #define b_EmulatePowerCLCS 12
142: #define b_EmulatePowerMemory 13
143: #define b_EmulateInvalidSPR 14
144: #define b_EmulatePOWERmaskLSB b_EmulateInvalidSPR
145: #define b_EmulateOptional 16
146: #define b_EmulatePrivMFPVR 17
147: #define b_EmulatePrivSPRperf 18
148: #define b_EmulatePrivSPRperf2 19
149: #define b_EmulatePrivSPRperf0 20
150:
151: /*
152: ** CtxFlags bit numbers
153: */
154: #define b_CtxFlagSystemContext 8
155: #define b_CtxFlagHWPowerCompatible 13
156: #define b_CtxFlagHWOptionsalInstr 14
157: #define b_CtxFlagHW64Bit 15
158: #define b_CtxFlagUnused16 16
159: #define b_CtxFlagUnused17 17
160: #define b_CtxFlagUnused18 18
161: #define b_CtxFlagUnused19 19
162: #define b_CtxFlagFPExceptionMode0 20
163: #define b_CtxFlagStepTraceEnabled 21
164: #define b_CtxFlagBranchTraceEnabled 22
165: #define b_CtxFlagFpExceptionMode1 23
166: #define b_CtxFlagUnused24 24
167: #define b_CtxFlagUnused25 24
168: #define b_CtxFlagTracePending 26
169: #define b_CtxFlagMemInfoValid 27
170: #define b_CtxFlag64BitMode 28
171: #define b_CtxFlagEmulatePowerCompatible 29
172: #define b_CtxFlagEmulateOptionalInstr 30
173: #define b_CtxFlagInstructionContinuation 31
174:
175: /* Exception Causes stored in bits 0..7 fo CtxFlags */
176: #define ecNoException ((0<<3)+0)
177: #define ecSystemCall ((0<<3)+1)
178: #define ecTrapInstr ((0<<3)+2)
179: #define ecFloatException ((0<<3)+3)
180: #define ecInvalidInstr ((0<<3)+4)
181: #define ecPrivilegedInstr ((0<<3)+5)
182: #define ecMachineCheck ((0<<3)+7)
183:
184: #define ecInstTrace ((1<<3)+0)
185: #define ecInstInvalidAddress ((1<<3)+2)
186: #define ecInstHardwareFault ((1<<3)+3)
187: #define ecPageFalut ((1<<3)+4)
188: #define ecInstSupAccessViolation ((1<<3)+6)
189:
190: #define ecDataInvalidAddress ((2<<3)+2)
191: #define ecDataHardwareFault ((2<<3)+3)
192: #define ecDataPageFault ((2<<3)+4)
193: #define ecDataWriteViolation ((2<<3)+5)
194: #define ecDataSupAccessViolation ((2<<3)+6)
195: #define ecDataSupWriteViolation ((2<<3)+7)
196:
197: /*
198: ** Registers used for decoding fields of unimplemented instructions
199: */
200: #define UnimpRSRT MemCmdInfo
201: #define UnimpRS UnimpRSRT
202: #define UnimpRT UnimpRSRT
203: #define UnimpRA MemUpdateEA
204: #define UnimpRB MemAddress
205: #define UnimpMQptr MemByteCount
206: #define UnimpMQtmp SavedVBR
207: #define UnimpXERtmp MemSetupInfo
208:
209: #define dUnimpRSRT dMemCmdInfo
210: #define dUnimpRS dUnimpRSRT
211: #define dUnimpRT dUnimpRSRT
212: #define dUnimpRA dMemUpdateEA
213: #define dUnimpRB dMemAddress
214: #define dUnimpMQptr dMemByteCount
215: #define dUnimpMQtmp dSavedVBR
216: #define dUnimpXERtmp dMemSetupInfo
217:
218: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.