📄 ppc_cpu.h
字号:
ltgteqso*/#define CR_CR0_LT (1<<31)#define CR_CR0_GT (1<<30)#define CR_CR0_EQ (1<<29)//#define CR_CR0_EQ (1 << 2)#define CR_CR0_SO (1<<28)/*cr1 bits: .684 Floating-point exception (FX)5 Floating-point enabled exception (FEX)6 Floating-point invalid exception (VX)7 Floating-point overflow exception (OX)*/#define CR_CR1_FX (1<<27)#define CR_CR1_FEX (1<<26)#define CR_CR1_VX (1<<25)#define CR_CR1_OX (1<<24)/*FPSCR bits: .70*/ #define FPSCR_FX (1<<31)#define FPSCR_FEX (1<<30)#define FPSCR_VX (1<<29)#define FPSCR_OX (1<<28)#define FPSCR_UX (1<<27)#define FPSCR_ZX (1<<26)#define FPSCR_XX (1<<25)#define FPSCR_VXSNAN (1<<24)#define FPSCR_VXISI (1<<23)#define FPSCR_VXIDI (1<<22)#define FPSCR_VXZDZ (1<<21)#define FPSCR_VXIMZ (1<<20)#define FPSCR_VXVC (1<<19)#define FPSCR_FR (1<<18)#define FPSCR_FI (1<<17)#define FPSCR_FPRF(v) (((v)>>12)&0x1f)#define FPSCR_res0 (1<<11)#define FPSCR_VXSOFT (1<<10)#define FPSCR_VXSQRT (1<<9)#define FPSCR_VXCVI (1<<8)#define FPSCR_VXVE (1<<7)#define FPSCR_VXOE (1<<6)#define FPSCR_VXUE (1<<5)#define FPSCR_VXZE (1<<4)#define FPSCR_VXXE (1<<3)#define FPSCR_VXNI (1<<2)#define FPSCR_RN(v) ((v)&3)#define FPSCR_RN_NEAR 0#define FPSCR_RN_ZERO 1#define FPSCR_RN_PINF 2#define FPSCR_RN_MINF 3 /*VSCR bits: sat = summary saturation nj = non-java floating-point mode*/#define VSCR_SAT 1#define VSCR_NJ (1<<16)/*xer bits:0 so1 ov2 carry3-24 res25-31 number of bytes for lswx/stswx*/#define XER_SO (1<<31)#define XER_OV (1<<30)#define XER_CA (1<<29)#define XER_n(v) ((v)&0x7f)/*msr: .830-12 res13 POW power management enabled14 res15 ILE exception little-endian mode16 EE enable external interrupt17 PR privilege level (0=sv)18 FP floating point avail19 ME maschine check exception enable20 FE0 floation point exception mode 021 SE single step enable22 BE branch trace enable23 FE1 floation point exception mode 124 res25 IP exception prefix26 IR intruction address translation27 DR data address translation28-29res30 RI recoverable exception31 LE little endian mode*/#define MSR_SF (1<<31)#define MSR_UNKNOWN (1<<30)#define MSR_UNKNOWN2 (1<<27)#define MSR_VEC (1<<25)#define MSR_POW (1<<18)#define MSR_TGPR (1<<15) // 603(e)#define MSR_ILE (1<<16)#define MSR_EE (1<<15)#define MSR_PR (1<<14)#define MSR_FP (1<<13)#define MSR_ME (1<<12)#define MSR_FE0 (1<<11)#define MSR_SE (1<<10)#define MSR_BE (1<<9)#define MSR_FE1 (1<<8)#define MSR_IP (1<<6)#define MSR_IR (1<<5)#define MSR_DR (1<<4)#define MSR_PM (1<<2)#define MSR_RI (1<<1)#define MSR_LE (1)//#define PPC_CPU_UNSUPPORTED_MSR_BITS (/*MSR_POW|*/MSR_ILE|MSR_BE|MSR_IP|MSR_LE)#define PPC_CPU_UNSUPPORTED_MSR_BITS (~(MSR_POW | MSR_UNKNOWN | MSR_UNKNOWN2 | MSR_VEC | MSR_EE | MSR_PR | MSR_FP | MSR_ME | MSR_FE0 | MSR_SE | MSR_FE1 | MSR_IR | MSR_DR | MSR_RI))#define MSR_RFI_SAVE_MASK (0xff73)/*BAT Register: .88upper:0-14 BEPI Block effective page index.15-18 res19-29 BL Block length.30 Vs Supervisor mode valid bit.31 Vp User mode valid bit.lower:0-14 BRPN This field is used in conjunction with the BL field to generate highorder bits of the physical address of the block.15-24 res25-28 WIMG Memory/cache access mode bits29 res30-31 PP Protection bits for block.BAT AreaLength BL Encoding128 Kbytes 000 0000 0000256 Kbytes 000 0000 0001512 Kbytes 000 0000 00111 Mbyte 000 0000 01112 Mbytes 000 0000 11114 Mbytes 000 0001 11118 Mbytes 000 0011 111116 Mbytes 000 0111 111132 Mbytes 000 1111 111164 Mbytes 001 1111 1111128 Mbytes 011 1111 1111256 Mbytes 111 1111 1111*/#define BATU_BEPI(v) ((v)&0xfffe0000)#define BATU_BL(v) (((v)&0x1ffc)>>2)#define BATU_Vs (1<<1)#define BATU_Vp (1)#define BATL_BRPN(v) ((v)&0xfffe0000)#define BAT_EA_OFFSET(v) ((v)&0x1ffff)#define BAT_EA_11(v) ((v)&0x0ffe0000)#define BAT_EA_4(v) ((v)&0xf0000000)/*sdr1: .910-15 The high-order 16 bits of the 32-bit physical address of the page table16-22 res23-31 Mask for page table address*/#define SDR1_HTABORG(v) (((v)>>16)&0xffff)#define SDR1_HTABMASK(v) ((v)&0x1ff)#define SDR1_PAGETABLE_BASE(v) ((v)&0xffff)/*sr: .940 T=0:1 Ks sv prot2 Kp user prot3 N No execute4-7 res8-31 VSID Virtual Segment ID0 T=1:1 Ks2 Kp3-11 BUID Bus Unit ID12-31 CNTRL_SPEC */#define SR_T (1<<31)#define SR_Ks (1<<30)#define SR_Kp (1<<29)#define SR_N (1<<28)#define SR_VSID(v) ((v)&0xffffff)#define SR_BUID(v) (((v)>>20)&0x1ff)#define SR_CNTRL_SPEC(v) ((v)&0xfffff)#define EA_SR(v) (((v)>>28)&0xf)#define EA_PageIndex(v) (((v)>>12)&0xffff)#define EA_Offset(v) ((v)&0xfff)#define EA_API(v) (((v)>>22)&0x3f)#define PA_RPN(v) (((v)>>12)&0xfffff)#define PA_Offset(v) ((v)&0xfff)/*PTE: .3640 V1-24 VSID25 H26-31 API*/#define PTE1_V (1<<31)#define PTE1_VSID(v) (((v)>>7)&0xffffff)#define PTE1_H (1<<6)#define PTE1_API(v) ((v)&0x3f)#define PTE2_RPN(v) ((v)&0xfffff000)#define PTE2_R (1<<8)#define PTE2_C (1<<7)#define PTE2_WIMG(v) (((v)>>3)&0xf)#define PTE2_PP(v) ((v)&3)#define PPC_L1_CACHE_LINE_SIZE 32#define PPC_LG_L1_CACHE_LINE_SIZE 5#define PPC_MAX_L1_COPY_PREFETCH 4/* * special registers */#define HID0 1008 /* Checkstop and misc enables */#define HID1 1009 /* Clock configuration */#define iabr 1010 /* Instruction address breakpoint register */#define ictrl 1011 /* Instruction Cache Control */#define ldstdb 1012 /* Load/Store Debug */#define dabr 1013 /* Data address breakpoint register */#define msscr0 1014 /* Memory subsystem control */#define msscr1 1015 /* Memory subsystem debug */#define msssr0 1015 /* Memory Subsystem Status */#define ldstcr 1016 /* Load/Store Status/Control */#define l2cr2 1016 /* L2 Cache control 2 */#define l2cr 1017 /* L2 Cache control */#define l3cr 1018 /* L3 Cache control */#define ictc 1019 /* I-cache throttling control */#define thrm1 1020 /* Thermal management 1 */#define thrm2 1021 /* Thermal management 2 */#define thrm3 1022 /* Thermal management 3 */#define pir 1023 /* Processor ID Register *///; hid0 bits#define HID0_emcp 0#define HID0_emcpm 0x80000000#define HID0_dbp 1#define HID0_dbpm 0x40000000#define HID0_eba 2#define HID0_ebam 0x20000000#define HID0_ebd 3#define HID0_ebdm 0x10000000#define HID0_sbclk 4#define HID0_sbclkm 0x08000000#define HID0_eclk 6#define HID0_eclkm 0x02000000#define HID0_par 7#define HID0_parm 0x01000000#define HID0_sten 7#define HID0_stenm 0x01000000#define HID0_doze 8#define HID0_dozem 0x00800000#define HID0_nap 9#define HID0_napm 0x00400000#define HID0_sleep 10#define HID0_sleepm 0x00200000#define HID0_dpm 11#define HID0_dpmm 0x00100000#define HID0_riseg 12#define HID0_risegm 0x00080000#define HID0_eiec 13#define HID0_eiecm 0x00040000#define HID0_mum 14#define HID0_mumm 0x00020000#define HID0_nhr 15#define HID0_nhrm 0x00010000#define HID0_ice 16#define HID0_icem 0x00008000#define HID0_dce 17#define HID0_dcem 0x00004000#define HID0_ilock 18#define HID0_ilockm 0x00002000#define HID0_dlock 19#define HID0_dlockm 0x00001000#define HID0_icfi 20#define HID0_icfim 0x00000800#define HID0_dcfi 21#define HID0_dcfim 0x00000400#define HID0_spd 22#define HID0_spdm 0x00000200#define HID0_sge 24#define HID0_sgem 0x00000080#define HID0_dcfa 25#define HID0_dcfam 0x00000040#define HID0_btic 26#define HID0_bticm 0x00000020#define HID0_lrstk 27#define HID0_lrstkm 0x00000010#define HID0_abe 28#define HID0_abem 0x00000008#define HID0_fold 28#define HID0_foldm 0x00000008#define HID0_bht 29#define HID0_bhtm 0x00000004#define HID0_nopdst 30#define HID0_nopdstm 0x00000002#define HID0_nopti 31#define HID0_noptim 0x00000001void ppc_cpu_atomic_raise_ext_exception();void ppc_cpu_atomic_cancel_ext_exception();extern uint32 gBreakpoint;extern uint32 gBreakpoint2;FILE * prof_file;void ppc_set_singlestep_v(bool v, const char *file, int line, const char *format, ...);void ppc_set_singlestep_nonverbose(bool v);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -