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