Files
2023-03-13 07:15:03 +00:00

74 lines
1.9 KiB
C

#ifndef _DOLPHIN_PPCARCH_H
#define _DOLPHIN_PPCARCH_H
#include "types.h"
#ifdef __cplusplus
extern "C"
{
#endif
#define HID0 0x3f0
#define HID0_ICE 0x8000
#define HID0_ICFI 0x800
#define HID0_DCE 0x4000
#define HID2 0x398
#define HID2_LCE_BIT 3
#define MSR_ME 0x1000
#define LC_BASE_PREFIX 0xE000
#define DBAT3L 3
#define DBAT3U 3
#define DMA_U 0x39a
#define DMA_L 0x39b
#define DMA_L_STORE 0
#define DMA_L_TRIGGER 2
#define LC_MAX_DMA_BLOCKS 128
#define LC_MAX_DMA_BYTES 0x1000
#define MSR_IR 0x00000020 // instruction relocate
#define MSR_DR 0x00000010 // data relocate
#define HID2_DCHERR 0x00800000 // ERROR: dcbz_l cache hit
#define HID2_DNCERR 0x00400000 // ERROR: DMA access to normal cache
#define HID2_DCMERR 0x00200000 // ERROR: DMA cache miss error
#define HID2_DQOERR 0x00100000 // ERROR: DMA queue overflow
#define HID2_DCHEE 0x00080000 // dcbz_l cache hit error enable
#define HID2_DNCEE 0x00040000 // DMA access to normal cache error enable
#define HID2_DCMEE 0x00020000 // DMA cache miss error error enable
#define HID2_DQOEE 0x00010000 // DMA queue overflow error enable
#define L2CR_L2E 0x80000000 // L2 Enable
#define L2CR_L2I 0x00200000 // Global invalidate
#define L2CR_L2IP 0x00000001 // L2 global invalidate in progress
#define SRR1_DMA_BIT 0x00200000
#define SRR1_L2DP_BIT 0x00100000
u32 PPCMfmsr();
void PPCMtmsr(u32 newMSR);
// u32 PPCOrMsr(u32 value);
void PPCOrMsr();
u32 PPCMfhid0();
void PPCMthid0(u32 newHID0);
u32 PPCMfl2cr();
void PPCMtl2cr(u32 newL2cr);
void PPCMtdec(u32 newDec);
void PPCSync();
void PPCHalt();
u32 PPCMffpscr();
void PPCMtfpscr(u32 newFPSCR);
u32 PPCMfhid2();
void PPCMthid2(u32 newhid2);
u32 PPCMfwpar();
void PPCMtwpar(u32 newwpar);
void PPCEnableSpeculation();
void PPCDisableSpeculation();
void PPCSetFpIEEEMode();
void PPCSetFpNonIEEEMode();
#ifdef __cplusplus
}
#endif
#endif