SSBM Decomp
Toggle main menu visibility
Loading...
Searching...
No Matches
PPCArch.h
Go to the documentation of this file.
1
#ifndef _DOLPHIN_PPCARCH
2
#define _DOLPHIN_PPCARCH
3
4
#include "
dolphin/types.h
"
5
6
#ifdef __cplusplus
7
extern
"C"
{
8
#endif
9
10
#define CTR 9
11
#define XER 1
12
#define LR 8
13
14
#define UPMC1 937
15
#define UPMC2 938
16
#define UPMC3 941
17
#define UPMC4 942
18
19
#define USIA 939
20
21
#define UMMCR0 936
22
#define UMMCR1 940
23
24
#define HID0 1008
25
#define HID1 1009
26
27
#define PVR 287
28
29
#define IBAT0U 528
30
#define IBAT0L 529
31
#define IBAT1U 530
32
#define IBAT1L 531
33
#define IBAT2U 532
34
#define IBAT2L 533
35
#define IBAT3U 534
36
#define IBAT3L 535
37
38
#define DBAT0U 536
39
#define DBAT0L 537
40
#define DBAT1U 538
41
#define DBAT1L 539
42
#define DBAT2U 540
43
#define DBAT2L 541
44
#define DBAT3U 542
45
#define DBAT3L 543
46
47
#define SDR1 25
48
49
#define SPRG0 272
50
#define SPRG1 273
51
#define SPRG2 274
52
#define SPRG3 275
53
54
#define DAR 19
55
#define DSISR 18
56
57
#define SRR0 26
58
#define SRR1 27
59
60
#define EAR 282
61
62
#define DABR 1013
63
64
#define TBL 284
65
#define TBU 285
66
67
#define L2CR 1017
68
69
#define DEC 22
70
71
#define IABR 1010
72
73
#define PMC1 953
74
#define PMC2 954
75
#define PMC3 957
76
#define PMC4 958
77
78
#define SIA 955
79
80
#define MMCR0 952
81
#define MMCR1 956
82
83
#define THRM1 1020
84
#define THRM2 1021
85
#define THRM3 1022
86
87
#define ICTC 1019
88
89
#define GQR0 912
90
#define GQR1 913
91
#define GQR2 914
92
#define GQR3 915
93
#define GQR4 916
94
#define GQR5 917
95
#define GQR6 918
96
#define GQR7 919
97
98
#define HID2 920
99
100
#define WPAR 921
101
102
#define DMA_U 922
103
#define DMA_L 923
104
105
#define MSR_POW 0x00040000
// Power Management
106
#define MSR_ILE 0x00010000
// Interrupt Little Endian
107
#define MSR_EE 0x00008000
// external interrupt
108
#define MSR_PR 0x00004000
// privilege level(should be 0)
109
#define MSR_FP 0x00002000
// floating point available
110
#define MSR_ME 0x00001000
// machine check enable
111
#define MSR_FE0 0x00000800
// floating point exception enable
112
#define MSR_SE 0x00000400
// single step trace enable
113
#define MSR_BE 0x00000200
// branch trace enable
114
#define MSR_FE1 0x00000100
// floating point exception enable
115
#define MSR_IP 0x00000040
// Exception prefix
116
#define MSR_IR 0x00000020
// instruction relocate
117
#define MSR_DR 0x00000010
// data relocate
118
#define MSR_PM 0x00000004
// Performance monitor marked mode
119
#define MSR_RI 0x00000002
// Recoverable interrupt
120
#define MSR_LE 0x00000001
// Little Endian
121
122
#define MSR_POW_BIT 13
// Power Management
123
#define MSR_ILE_BIT 15
// Interrupt Little Endian
124
#define MSR_EE_BIT 16
// external interrupt
125
#define MSR_PR_BIT 17
// privilege level (should be 0)
126
#define MSR_FP_BIT 18
// floating point available
127
#define MSR_ME_BIT 19
// machine check enable
128
#define MSR_FE0_BIT 20
// floating point exception enable
129
#define MSR_SE_BIT 21
// single step trace enable
130
#define MSR_BE_BIT 22
// branch trace enable
131
#define MSR_FE1_BIT 23
// floating point exception enable
132
#define MSR_IP_BIT 25
// Exception prefix
133
#define MSR_IR_BIT 26
// instruction relocate
134
#define MSR_DR_BIT 27
// data relocate
135
#define MSR_PM_BIT 29
// Performance monitor marked mode
136
#define MSR_RI_BIT 30
// Recoverable interrupt
137
#define MSR_LE_BIT 31
// Little Endian
138
139
/*---------------------------------------------------------------------------*
140
HID0 bits
141
*---------------------------------------------------------------------------*/
142
#define HID0_EMCP 0x80000000u
// Enable MCP
143
#define HID0_DBP 0x40000000u
// Enable 60x bus address and data parity chk
144
#define HID0_EBA 0x20000000u
// Enable 60x address parity checking
145
#define HID0_EBD 0x10000000u
// Enable 60x data parity checking
146
#define HID0_BCLK 0x08000000u
// CLK_OUT output enable and clk selection
147
#define HID0_ECLK 0x02000000u
// CLK_OUT output enable and clk selection
148
#define HID0_PAR 0x01000000u
// Disable !ARTRY precharge
149
#define HID0_DOZE 0x00800000u
// Doze mode enable
150
#define HID0_NAP 0x00400000u
// Nap mode enable
151
#define HID0_SLEEP 0x00200000u
// Sleep mode enable
152
#define HID0_DPM 0x00100000u
// Dynamic power management enable
153
#define HID0_NHR 0x00010000u
// Not hard reset (0 hard reset if s/w set it)
154
#define HID0_ICE 0x00008000u
// Instruction cache enable
155
#define HID0_DCE 0x00004000u
// Data cache enable
156
#define HID0_ILOCK 0x00002000u
// ICache lock
157
#define HID0_DLOCK 0x00001000u
// DCache lock
158
#define HID0_ICFI 0x00000800u
// ICache flash invalidate
159
#define HID0_DCFI 0x00000400u
// DCache flash invalidate
160
#define HID0_SPD 0x00000200u
// Speculative cache access enable (0 enable)
161
#define HID0_IFEM 0x00000100u
// Enable M bit on bus for Ifetch
162
#define HID0_SGE 0x00000080u
// Store gathering enable
163
#define HID0_DCFA 0x00000040u
// DCache flush assist - set before a flush
164
#define HID0_BTIC 0x00000020u
// Branch target icache enable
165
#define HID0_ABE 0x00000008u
// Address bcast enable
166
#define HID0_BHT 0x00000004u
// Branch history table enable
167
#define HID0_NOOPTI 0x00000001u
// No-op Dcache touch instructions
168
169
#define HID0_ICE_BIT 16
// Instruction cache enable
170
#define HID0_DCE_BIT 17
// Data cache enable
171
#define HID0_ILOCK_BIT 18
// ICache lock
172
#define HID0_DLOCK_BIT 19
// DCache lock
173
174
#define HID2_LSQE 0x80000000
// L/S quantize enable
175
#define HID2_WPE 0x40000000
// Write pipe enable
176
#define HID2_PSE 0x20000000
// Paired single enable
177
#define HID2_LCE 0x10000000
// Locked cache enable
178
179
#define HID2_DCHERR 0x00800000
// ERROR: dcbz_l cache hit
180
#define HID2_DNCERR 0x00400000
// ERROR: DMA access to normal cache
181
#define HID2_DCMERR 0x00200000
// ERROR: DMA cache miss error
182
#define HID2_DQOERR 0x00100000
// ERROR: DMA queue overflow
183
#define HID2_DCHEE 0x00080000
// dcbz_l cache hit error enable
184
#define HID2_DNCEE 0x00040000
// DMA access to normal cache error enable
185
#define HID2_DCMEE 0x00020000
// DMA cache miss error error enable
186
#define HID2_DQOEE 0x00010000
// DMA queue overflow error enable
187
188
#define HID2_DMAQL_MASK 0x0F000000
// DMA queue length mask
189
#define HID2_DMAQL_SHIFT 24
// DMA queue shift
190
191
#define HID2_LSQE_BIT 0
192
#define HID2_WPE_BIT 1
193
#define HID2_PSE_BIT 2
194
#define HID2_LCE_BIT 3
195
196
#define HID2_DCHERR_BIT 8
197
#define HID2_DNCERR_BIT 9
198
#define HID2_DCMERR_BIT 10
199
#define HID2_DQOERR_BIT 11
200
#define HID2_DCHEE_BIT 12
201
#define HID2_DNCEE_BIT 13
202
#define HID2_DCMEE_BIT 14
203
#define HID2_DQOEE_BIT 15
204
205
#define GQR_LOAD_SCALE_MASK 0x3F000000
// load scale field
206
#define GQR_LOAD_TYPE_MASK 0x00070000
// load type field
207
#define GQR_STORE_SCALE_MASK 0x00003F00
// store scale field
208
#define GQR_STORE_TYPE_MASK 0x00000007
// store type field
209
210
typedef
struct
211
{
212
u32
_pad0
:2;
213
u32
loadScale
:6;
214
u32
_pad1
:5;
215
u32
loadType
:3;
216
u32
_pad2
:2;
217
u32
storeScale
:6;
218
u32
_pad3
:5;
219
u32
storeType
:3;
220
}
PPC_GQR_t
;
221
222
typedef
union
223
{
224
u32
val
;
225
PPC_GQR_t
f
;
226
}
PPC_GQR_u
;
227
228
229
#define DMA_U_ADDR_MASK 0xFFFFFFE0
// Start addr in memory
230
#define DMA_U_LEN_U_MASK 0x0000001F
// lines to transfer (U)
231
232
#define DMA_L_LC_ADDR_MASK 0xFFFFFFE0
// Start addr in LC
233
#define DMA_L_LOAD 0x00000010
// 0 - store, 1 - load
234
#define DMA_L_STORE 0x00000000
// 0 - store, 1 - load
235
#define DMA_L_LEN_MASK 0x0000000C
// lines to transfer (L)
236
#define DMA_L_TRIGGER 0x00000002
// 0 - cmd inactive, 1 - cmd rdy
237
#define DMA_L_FLUSH 0x00000001
// 1 - Flush DMA queue
238
239
typedef
struct
240
{
241
u32
memAddr
:27;
242
u32
dmaLenU
:5;
243
}
PPC_DMA_U_t
;
244
245
typedef
union
246
{
247
u32
val
;
248
PPC_DMA_U_t
f
;
249
}
PPC_DMA_U_u
;
250
251
252
typedef
struct
253
{
254
u32
lcAddr
:27;
255
u32
dmaLd
:1;
256
u32
dmaLenL
:2;
257
u32
dmaTrigger
:1;
258
u32
dmaFlush
:1;
259
}
PPC_DMA_L_t
;
260
261
262
typedef
union
263
{
264
u32
val
;
265
PPC_DMA_L_t
f
;
266
}
PPC_DMA_L_u
;
267
268
269
#define WPAR_ADDR 0xFFFFFFE0
// 32byte gather address
270
#define WPAR_BNE 0x00000001
// Buffer not empty (R)
271
272
#define SRR1_DMA_BIT 0x00200000
273
#define SRR1_L2DP_BIT 0x00100000
274
275
#define L2CR_L2E 0x80000000
// L2 Enable
276
#define L2CR_L2PE 0x40000000
// L2 data parity generation and checking enable
277
278
#define L2CR_L2SIZ_256K 0x10000000
// L2 size 256K
279
#define L2CR_L2SIZ_512K 0x20000000
// L2 size 512
280
#define L2CR_L2SIZ_1M 0x30000000
// L2 size 1M
281
282
#define L2CR_L2CLK_1_0 0x02000000
// L2 clock ratio 1
283
#define L2CR_L2CLK_1_5 0x04000000
// L2 clock ratio 1.5
284
#define L2CR_L2CLK_2_0 0x08000000
// L2 clock ratio 2
285
#define L2CR_L2CLK_2_5 0x0A000000
// L2 clock ratio 2.5
286
#define L2CR_L2CLK_3_0 0x0C000000
// L2 clock ratio 3
287
288
#define L2CR_RAM_FLOW_THRU_BURST 0x00000000
// L2 RAM type flow-through sync. burst SRAM
289
#define L2CR_RAM_PIPELINE_BURST 0x01000000
// L2 RAM type pipelined sync. burst SRAM
290
#define L2CR_RAM_PIPELINE_LATE 0x01800000
// L2 RAM type pipelined sync. late-write SRAM
291
292
#define L2CR_L2DO 0x00400000
// Data only
293
#define L2CR_L2I 0x00200000
// Global invalidate
294
#define L2CR_L2CTL 0x00100000
// ZZ enable
295
#define L2CR_L2WT 0x00080000
// L2 write through
296
#define L2CR_L2TS 0x00040000
// L2 test support
297
298
#define L2CR_L2OH_0_5 0x00000000
// L2 output hold 0.5 ns
299
#define L2CR_L2OH_1_0 0x00010000
// L2 output hold 1.0 ns
300
301
#define L2CR_L2SL 0x00008000
// L2 DLL slow
302
#define L2CR_L2DF 0x00004000
// L2 differential clock
303
#define L2CR_L2BYP 0x00002000
// L2 DLL bypass
304
#define L2CR_L2CS 0x00000200
// L2 clock stop
305
#define L2CR_L2DRO 0x00000100
// L2 DLL rollover checkstop enable
306
#define L2CR_L2CTR_MASK 0x000000FE
// L2 counter value mask
307
#define L2CR_L2IP 0x00000001
// L2 global invalidate in progress
308
309
#define MMCR0_DIS 0x80000000
// Disables counting unconditionally
310
#define MMCR0_DP 0x40000000
// Disables counting while in supervisor mode
311
#define MMCR0_DU 0x20000000
// Disables counting while in user mode
312
#define MMCR0_DMS 0x10000000
// Disables counting while MSR[PM] is set
313
#define MMCR0_DMR 0x08000000
// Disables counting while MSR[PM] is zero
314
#define MMCR0_ENINT 0x04000000
// Enables performance monitor interrupt signaling
315
#define MMCR0_DISCOUNT 0x02000000
// Disables counting of PMCn when a performance monitor interrupt is signaled or...
316
#define MMCR0_RTCSELECT_MASK 0x01800000
// 64-bit time base, bit selection enable
317
#define MMCR0_RTCSELECT_63 0x00000000
// Pick bit 63 to count
318
#define MMCR0_RTCSELECT_55 0x00800000
// Pick bit 55 to count
319
#define MMCR0_RTCSELECT_51 0x01000000
// Pick bit 51 to count
320
#define MMCR0_RTCSELECT_47 0x01800000
// Pick bit 47 to count
321
#define MMCR0_INTONBITTRANS 0x00400000
// Causes interrupt signaling on bit transition from off to on
322
#define MMCR0_THRESHOLD_MASK 0x003F0000
// Threshold value
323
#define MMCR0_THRESHOLD(n) ((n) << 16)
// Threshold value (0 - 63)
324
#define MMCR0_PMC1INTCONTROL 0x00008000
// Enables interrupt signaling due to PMC1 counter overflow
325
#define MMCR0_PMC2INTCONTROL 0x00004000
// Enables interrupt signaling due to PMC2-PMC4 counter overflow
326
#define MMCR0_PMCTRIGGER 0x00002000
// Can be used to trigger counting of PMC2-PMC4 after PMC1 has overflowed or...
327
#define MMCR0_PMC1SELECT_MASK 0x00001FC0
// PMC1 input selector
328
#define MMCR0_PMC2SELECT_MASK 0x0000003F
// PMC2 input selector
329
330
#define MMCR1_PMC3SELECT_MASK 0xF8000000
// PMC3 input selector
331
#define MMCR1_PMC4SELECT_MASK 0x07C00000
// PMC4 input selector
332
333
#define PMC1_OV 0x80000000
// Overflow
334
#define PMC1_COUNTER 0x7FFFFFFF
// Counter value
335
#define PMC2_OV 0x80000000
// Overflow
336
#define PMC2_COUNTER 0x7FFFFFFF
// Counter value
337
#define PMC3_OV 0x80000000
// Overflow
338
#define PMC3_COUNTER 0x7FFFFFFF
// Counter value
339
#define PMC4_OV 0x80000000
// Overflow
340
#define PMC4_COUNTER 0x7FFFFFFF
// Counter value
341
342
/*---------------------------------------------------------------------------*
343
PMC1 Events
344
*---------------------------------------------------------------------------*/
345
#define MMCR0_PMC1_HOLD 0x00000000
// Register holds current value
346
#define MMCR0_PMC1_CYCLE 0x00000040
// Processor cycles
347
#define MMCR0_PMC1_INSTRUCTION 0x00000080
// # of instructions completed.
348
#define MMCR0_PMC1_TRANSITION 0x000000C0
// # of transitions for 0 to 1
349
#define MMCR0_PMC1_DISPATCHED 0x00000100
// # of instructions dispatched
350
#define MMCR0_PMC1_EIEIO 0x00000140
// # of eieio instructions completed
351
#define MMCR0_PMC1_ITLB_CYCLE 0x00000180
// # of cycles spent performing table search op. for the ITLB
352
#define MMCR0_PMC1_L2_HIT 0x000001C0
// # of access that hit the L2.
353
#define MMCR0_PMC1_EA 0x00000200
// # of valid instruction EAs delivered to the memory subsystem
354
#define MMCR0_PMC1_IABR 0x00000240
// # of time the address of an instruction matches the IABR
355
#define MMCR0_PMC1_L1_MISS 0x00000280
// # of loads that miss the L1
356
#define MMCR0_PMC1_Bx_UNRESOLVED 0x000002C0
// # of branches that are unresolved when processed
357
#define MMCR0_PMC1_Bx_STALL_CYCLE 0x00000300
// # of cycles that dispatcher stalls due to a second
358
// unresolved branch in the instruction stream
359
#define MMCR0_PMC1_IC_FETCH_MISS 0x00000340
// # of times an instruction fetch missed the L1 Icache
360
#define MMCR0_PMC2_HOLD 0x00000000
// Register holds current value
361
#define MMCR0_PMC2_CYCLE 0x00000001
// Processor cycles
362
#define MMCR0_PMC2_INSTRUCTION 0x00000002
// # of instructions completed
363
#define MMCR0_PMC2_TRANSITION 0x00000003
// # of time-base (lower) bit transitions
364
#define MMCR0_PMC2_DISPATCHED 0x00000004
// # of instructions dispatched
365
#define MMCR0_PMC2_IC_MISS 0x00000005
// # of L1 instruction cache misses
366
#define MMCR0_PMC2_ITLB_MISS 0x00000006
// # of ITLB misses
367
#define MMCR0_PMC2_L2_I_MISS 0x00000007
// # of L2 instruction misses
368
#define MMCR0_PMC2_Bx_FALL_TROUGH 0x00000008
// # of fall-through branches
369
#define MMCR0_PMC2_PR_SWITCH 0x00000009
// # of MSR[PR] bit toggles
370
#define MMCR0_PMC2_RESERVED_LOAD 0x0000000A
// # of reserved loads completed
371
#define MMCR0_PMC2_LOAD_STORE 0x0000000B
// # of completed loads and stores
372
#define MMCR0_PMC2_SNOOP 0x0000000C
// # of snoops
373
#define MMCR0_PMC2_L1_CASTOUT 0x0000000D
// # of L1 castouts to L2
374
#define MMCR0_PMC2_SYSTEM 0x0000000E
// # of completed system unit instructions
375
#define MMCR0_PMC2_IC_FETCH_MISS 0x0000000F
// # of instruction fetch misses in the L1
376
#define MMCR0_PMC2_Bx_OUT_OF_ORDER 0x00000010
// # of branches allowing out-of-order execution
377
378
/*---------------------------------------------------------------------------*
379
PMC3 Events
380
*---------------------------------------------------------------------------*/
381
#define MMCR1_PMC3_HOLD 0x00000000
// Register holds current value
382
#define MMCR1_PMC3_CYCLE 0x08000000
// Processor cycles
383
#define MMCR1_PMC3_INSTRUCTION 0x10000000
// # of instructions completed
384
#define MMCR1_PMC3_TRANSITION 0x18000000
// # of time-base (lower) bit transitions
385
#define MMCR1_PMC3_DISPATCHED 0x20000000
// # of instructions dispatched
386
#define MMCR1_PMC3_DC_MISS 0x28000000
// # of L1 data cache misses
387
#define MMCR1_PMC3_DTLB_MISS 0x30000000
// # of DTLB misses
388
#define MMCR1_PMC3_L2_D_MISS 0x38000000
// # of L2 data misses
389
#define MMCR1_PMC3_Bx_TAKEN 0x40000000
// # predicted branches that were taken
390
#define MMCR1_PMC3_PM_SWITCH 0x48000000
// # of transitions between marked and unmarked processes
391
#define MMCR1_PMC3_COND_STORE 0x50000000
// # of store conditional instructions completed
392
#define MMCR1_PMC3_FPU 0x58000000
// # of instructions completed from the FPU
393
#define MMCR1_PMC3_L2_SNOOP_CASTOUT 0x60000000
// # of L2 castout caused by snoops to modified lines
394
#define MMCR1_PMC3_L2_HIT 0x68000000
// # of cache operations that hit in the L2 cache
395
#define MMCR1_PMC3_L1_MISS_CYCLE 0x78000000
// # of cycles generated by L1 load misses
396
#define MMCR1_PMC3_Bx_SECOND 0x80000000
// # of branches in the second speculative branch
397
// resolved correctly
398
#define MMCR1_PMC3_BPU_LR_CR 0x88000000
// # of cycles the BPU stalls due to LR or CR unresolved
399
// dependencies
400
401
#define MMCR1_PMC4_HOLD 0x00000000
// Register holds current value
402
#define MMCR1_PMC4_CYCLE 0x00400000
// Processor cycles
403
#define MMCR1_PMC4_INSTRUCTION 0x00800000
// # of instructions completed
404
#define MMCR1_PMC4_TRANSITION 0x00C00000
// # of time-base (lower) bit transitions
405
#define MMCR1_PMC4_DISPATCHED 0x01000000
// # of instructions dispatched
406
#define MMCR1_PMC4_L2_CASTOUT 0x01400000
// # of L2 castouts
407
#define MMCR1_PMC4_DTLB_CYCLE 0x01800000
// # of cycles spent performing table searches for DTLB accesses
408
#define MMCR1_PMC4_Bx_MISSED 0x02000000
// # of mispredicted branches
409
#define MMCR1_PMC4_COND_STORE_INT 0x02800000
// # of store conditional instructions completed
410
// with reservation intact
411
#define MMCR1_PMC4_SYNC 0x02C00000
// # of completed sync instructions
412
#define MMCR1_PMC4_SNOOP_RETRY 0x03000000
// # of snoop request retries
413
#define MMCR1_PMC4_INTEGER 0x03400000
// # of completed integer operations
414
#define MMCR1_PMC4_BPU_THIRD 0x03800000
// # of cycles the BPU cannot process new branches
415
// due to having two unresolved branches
416
#define MMCR1_PMC4_DC_MISS 0x07C00000
// # of L1 data cache misses
417
418
/*---------------------------------------------------------------------------*
419
FPSCR bits
420
*---------------------------------------------------------------------------*/
421
#ifndef FPSCR_FX
422
#define FPSCR_FX 0x80000000
// Exception summary
423
#define FPSCR_FEX 0x40000000
// Enabled exception summary
424
#define FPSCR_VX 0x20000000
// Invalid operation
425
#define FPSCR_OX 0x10000000
// Overflow exception
426
#define FPSCR_UX 0x08000000
// Underflow exception
427
#define FPSCR_ZX 0x04000000
// Zero divide exception
428
#define FPSCR_XX 0x02000000
// Inexact exception
429
#define FPSCR_VXSNAN 0x01000000
// SNaN
430
#define FPSCR_VXISI 0x00800000
// Infinity - Infinity
431
#define FPSCR_VXIDI 0x00400000
// Infinity / Infinity
432
#define FPSCR_VXZDZ 0x00200000
// 0 / 0
433
#define FPSCR_VXIMZ 0x00100000
// Infinity * 0
434
#define FPSCR_VXVC 0x00080000
// Invalid compare
435
#define FPSCR_FR 0x00040000
// Fraction rounded
436
#define FPSCR_FI 0x00020000
// Fraction inexact
437
#define FPSCR_VXSOFT 0x00000400
// Software request
438
#define FPSCR_VXSQRT 0x00000200
// Invalid square root
439
#define FPSCR_VXCVI 0x00000100
// Invalid integer convert
440
#define FPSCR_VE 0x00000080
// Invalid operation exception enable
441
#define FPSCR_OE 0x00000040
// Overflow exception enable
442
#define FPSCR_UE 0x00000020
// Underflow exception enable
443
#define FPSCR_ZE 0x00000010
// Zero divide exception enable
444
#define FPSCR_XE 0x00000008
// Inexact exception enable
445
#define FPSCR_NI 0x00000004
// Non-IEEE mode
446
#endif
447
448
#ifndef FPSCR_FX_BIT
449
#define FPSCR_FX_BIT 0
// Exception summary
450
#define FPSCR_FEX_BIT 1
// Enabled exception summary
451
#define FPSCR_VX_BIT 2
// Invalid operation
452
#define FPSCR_OX_BIT 3
// Overflow exception
453
#define FPSCR_UX_BIT 4
// Underflow exception
454
#define FPSCR_ZX_BIT 5
// Zero divide exception
455
#define FPSCR_XX_BIT 6
// Inexact exception
456
#define FPSCR_VXSNAN_BIT 7
// SNaN
457
#define FPSCR_VXISI_BIT 8
// Infinity - Infinity
458
#define FPSCR_VXIDI_BIT 9
// Infinity / Infinity
459
#define FPSCR_VXZDZ_BIT 10
// 0 / 0
460
#define FPSCR_VXIMZ_BIT 11
// Infinity * 0
461
#define FPSCR_VXVC_BIT 12
// Invalid compare
462
#define FPSCR_FR_BIT 13
// Fraction rounded
463
#define FPSCR_FI_BIT 14
// Fraction inexact
464
#define FPSCR_VXSOFT_BIT 21
// Software request
465
#define FPSCR_VXSQRT_BIT 22
// Invalid square root
466
#define FPSCR_VXCVI_BIT 23
// Invalid integer convert
467
#define FPSCR_VE_BIT 24
// Invalid operation exception enable
468
#define FPSCR_OE_BIT 25
// Overflow exception enable
469
#define FPSCR_UE_BIT 26
// Underflow exception enable
470
#define FPSCR_ZE_BIT 27
// Zero divide exception enable
471
#define FPSCR_XE_BIT 28
// Inexact exception enable
472
#define FPSCR_NI_BIT 29
// Non-IEEE mode
473
#endif
474
475
// PPCArch.c
476
u32
PPCMfmsr
();
477
void
PPCMtmsr
(
u32
newMSR);
478
u32
PPCOrMsr
(
u32
value);
479
u32
PPCMfhid0
();
480
void
PPCMthid0
(
u32
newHID0);
481
u32
PPCMfl2cr
();
482
void
PPCMtl2cr
(
u32
newL2cr);
483
void
PPCMtdec
(
u32
newDec);
484
void
PPCSync
();
485
void
PPCHalt
();
486
u32
PPCMffpscr
();
487
void
PPCMtfpscr
(
u32
newFPSCR);
488
u32
PPCMfhid2
();
489
void
PPCMthid2
(
u32
newhid2);
490
u32
PPCMfwpar
();
491
void
PPCMtwpar
(
u32
newwpar);
492
void
PPCEnableSpeculation
();
493
void
PPCDisableSpeculation
();
494
void
PPCSetFpIEEEMode
();
495
void
PPCSetFpNonIEEEMode
();
496
u32
PPCMfpmc4
();
497
u32
PPCMfpmc3
();
498
u32
PPCMfpmc1
();
499
void
PPCMtpmc1
(
u32
newPmc1);
500
void
PPCMtpmc2
(
u32
newPmc1);
501
void
PPCMtpmc3
(
u32
newPmc1);
502
void
PPCMtpmc4
(
u32
newPmc1);
503
void
PPCMtmmcr0
(
u32
newMmcr0);
504
void
PPCMtmmcr1
(
u32
newMmcr0);
505
void
PPCMtdmaU
(
u32
newdmau);
506
void
PPCMtdmaL
(
u32
newdmal);
507
u32
PPCMfdec
(
void
);
508
u32
PPCAndMsr
(
u32
value);
509
u32
PPCAndCMsr
(
u32
value);
510
u32
PPCMfhid1
();
511
void
PPCEieio
();
512
u32
PPCMfmmcr0
();
513
u32
PPCMfmmcr1
();
514
u32
PPCMfpmc2
();
515
u32
PPCMfsia
();
516
void
PPCMtsia
(
u32
newSia);
517
u32
PPCMfdmaL
();
518
u32
PPCMfpvr
();
519
u32
PPCMfdmaU
();
520
521
// PPCPm.c
522
void
PMBegin
(
void
);
523
void
PMEnd
(
void
);
524
void
PMCycles
(
void
);
525
void
PML1FetchMisses
(
void
);
526
void
PML1MissCycles
(
void
);
527
void
PMInstructions
(
void
);
528
529
#ifdef __cplusplus
530
}
531
#endif
532
533
#endif
// _DOLPHIN_PPCARCH
PPCMtfpscr
void PPCMtfpscr(u32 newFPSCR)
PPCMfpmc1
u32 PPCMfpmc1()
PPCDisableSpeculation
void PPCDisableSpeculation()
PPCAndMsr
u32 PPCAndMsr(u32 value)
PPCMffpscr
u32 PPCMffpscr()
PMInstructions
void PMInstructions(void)
PPCMfl2cr
u32 PPCMfl2cr()
PPCMfsia
u32 PPCMfsia()
PPCOrMsr
u32 PPCOrMsr(u32 value)
PPCMtdec
void PPCMtdec(u32 newDec)
PPCAndCMsr
u32 PPCAndCMsr(u32 value)
PPCMtmsr
void PPCMtmsr(u32 newMSR)
PPCMtmmcr1
void PPCMtmmcr1(u32 newMmcr0)
PMEnd
void PMEnd(void)
PPCMfdec
u32 PPCMfdec(void)
PPCMtwpar
void PPCMtwpar(u32 newwpar)
PPCMfwpar
u32 PPCMfwpar()
PMBegin
void PMBegin(void)
PPCMtpmc4
void PPCMtpmc4(u32 newPmc1)
PPCMfpmc2
u32 PPCMfpmc2()
PPCMfdmaU
u32 PPCMfdmaU()
PPCMfhid2
u32 PPCMfhid2()
PMCycles
void PMCycles(void)
PML1FetchMisses
void PML1FetchMisses(void)
PML1MissCycles
void PML1MissCycles(void)
PPCMfdmaL
u32 PPCMfdmaL()
PPCMfpmc3
u32 PPCMfpmc3()
PPCMfpmc4
u32 PPCMfpmc4()
PPCMfmmcr0
u32 PPCMfmmcr0()
PPCMfhid0
u32 PPCMfhid0()
PPCMthid0
void PPCMthid0(u32 newHID0)
PPCMtpmc2
void PPCMtpmc2(u32 newPmc1)
PPCSync
void PPCSync()
PPCMtpmc3
void PPCMtpmc3(u32 newPmc1)
PPCEieio
void PPCEieio()
PPCMtmmcr0
void PPCMtmmcr0(u32 newMmcr0)
PPCMfmsr
u32 PPCMfmsr()
PPCMfpvr
u32 PPCMfpvr()
PPCMtsia
void PPCMtsia(u32 newSia)
PPCSetFpIEEEMode
void PPCSetFpIEEEMode()
PPCSetFpNonIEEEMode
void PPCSetFpNonIEEEMode()
PPCHalt
void PPCHalt()
PPCMfhid1
u32 PPCMfhid1()
PPCMthid2
void PPCMthid2(u32 newhid2)
PPCMtdmaL
void PPCMtdmaL(u32 newdmal)
PPCMtpmc1
void PPCMtpmc1(u32 newPmc1)
PPCMfmmcr1
u32 PPCMfmmcr1()
PPCEnableSpeculation
void PPCEnableSpeculation()
PPCMtdmaU
void PPCMtdmaU(u32 newdmau)
PPCMtl2cr
void PPCMtl2cr(u32 newL2cr)
types.h
u32
unsigned long u32
Definition
types.h:9
PPC_DMA_L_t
Definition
PPCArch.h:253
PPC_DMA_L_t::dmaFlush
u32 dmaFlush
Definition
PPCArch.h:258
PPC_DMA_L_t::dmaTrigger
u32 dmaTrigger
Definition
PPCArch.h:257
PPC_DMA_L_t::lcAddr
u32 lcAddr
Definition
PPCArch.h:254
PPC_DMA_L_t::dmaLenL
u32 dmaLenL
Definition
PPCArch.h:256
PPC_DMA_L_t::dmaLd
u32 dmaLd
Definition
PPCArch.h:255
PPC_DMA_U_t
Definition
PPCArch.h:240
PPC_DMA_U_t::dmaLenU
u32 dmaLenU
Definition
PPCArch.h:242
PPC_DMA_U_t::memAddr
u32 memAddr
Definition
PPCArch.h:241
PPC_GQR_t
Definition
PPCArch.h:211
PPC_GQR_t::loadType
u32 loadType
Definition
PPCArch.h:215
PPC_GQR_t::storeType
u32 storeType
Definition
PPCArch.h:219
PPC_GQR_t::storeScale
u32 storeScale
Definition
PPCArch.h:217
PPC_GQR_t::_pad1
u32 _pad1
Definition
PPCArch.h:214
PPC_GQR_t::_pad2
u32 _pad2
Definition
PPCArch.h:216
PPC_GQR_t::_pad0
u32 _pad0
Definition
PPCArch.h:212
PPC_GQR_t::loadScale
u32 loadScale
Definition
PPCArch.h:213
PPC_GQR_t::_pad3
u32 _pad3
Definition
PPCArch.h:218
PPC_DMA_L_u
Definition
PPCArch.h:263
PPC_DMA_L_u::val
u32 val
Definition
PPCArch.h:264
PPC_DMA_L_u::f
PPC_DMA_L_t f
Definition
PPCArch.h:265
PPC_DMA_U_u
Definition
PPCArch.h:246
PPC_DMA_U_u::f
PPC_DMA_U_t f
Definition
PPCArch.h:248
PPC_DMA_U_u::val
u32 val
Definition
PPCArch.h:247
PPC_GQR_u
Definition
PPCArch.h:223
PPC_GQR_u::val
u32 val
Definition
PPCArch.h:224
PPC_GQR_u::f
PPC_GQR_t f
Definition
PPCArch.h:225
extern
dolphin
include
dolphin
base
PPCArch.h
Generated by
1.17.0