📄 sbmips32.h
字号:
*/#define M_CAUSE_BD _MM_MAKEMASK1(31) /* exception in BD slot */#define S_CAUSE_CE 28 /* coprocessor error */#define M_CAUSE_CE _MM_MAKEMASK(2,S_CAUSE_CE)#define V_CAUSE_CE(x) _MM_MAKEVALUE(x,S_CAUSE_CE)#define G_CAUSE_CE(x) _MM_GETVALUE(x,S_CAUSE_CE,M_CAUSE_CE)#define M_CAUSE_IV _MM_MAKEMASK1(23) /* special interrupt */#define M_CAUSE_WP _MM_MAKEMASK1(22) /* watch interrupt deferred */#define S_CAUSE_IPMASK 8#define M_CAUSE_IPMASK _MM_MAKEMASK(9,S_CAUSE_IPMASK)#define M_CAUSE_IP8 _MM_MAKEMASK1(16) /* Broadcom extension */#define M_CAUSE_IP7 _MM_MAKEMASK1(15) /* hardware interrupts */#define M_CAUSE_IP6 _MM_MAKEMASK1(14)#define M_CAUSE_IP5 _MM_MAKEMASK1(13)#define M_CAUSE_IP4 _MM_MAKEMASK1(12)#define M_CAUSE_IP3 _MM_MAKEMASK1(11)#define M_CAUSE_IP2 _MM_MAKEMASK1(10)#define M_CAUSE_SW1 _MM_MAKEMASK1(9) /* software interrupts */#define M_CAUSE_SW0 _MM_MAKEMASK1(8)#define S_CAUSE_EXC 2#define M_CAUSE_EXC _MM_MAKEMASK(5,S_CAUSE_EXC)#define V_CAUSE_EXC(x) _MM_MAKEVALUE(x,S_CAUSE_EXC)#define G_CAUSE_EXC(x) _MM_GETVALUE(x,S_CAUSE_EXC,M_CAUSE_EXC)/* Exception Code */#define K_CAUSE_EXC_INT 0 /* External interrupt */#define K_CAUSE_EXC_MOD 1 /* TLB modification */#define K_CAUSE_EXC_TLBL 2 /* TLB miss (Load or Ifetch) */#define K_CAUSE_EXC_TLBS 3 /* TLB miss (Save) */#define K_CAUSE_EXC_ADEL 4 /* Address error (Load or Ifetch) */#define K_CAUSE_EXC_ADES 5 /* Address error (Save) */#define K_CAUSE_EXC_IBE 6 /* Bus error (Ifetch) */#define K_CAUSE_EXC_DBE 7 /* Bus error (data load or store) */#define K_CAUSE_EXC_SYS 8 /* System call */#define K_CAUSE_EXC_BP 9 /* Break point */#define K_CAUSE_EXC_RI 10 /* Reserved instruction */#define K_CAUSE_EXC_CPU 11 /* Coprocessor unusable */#define K_CAUSE_EXC_OVF 12 /* Arithmetic overflow */#define K_CAUSE_EXC_TRAP 13 /* Trap exception */#define K_CAUSE_EXC_FPE 15 /* Floating Point Exception */#define K_CAUSE_EXC_CP2 16 /* Cp2 Exception */#define K_CAUSE_EXC_WATCH 23 /* Watchpoint exception */#define K_NTLBENTRIES 32#define HI_HALF(x) ((x) >> 16)#define LO_HALF(x) ((x) & 0xffff)/* FPU stuff */#if defined(__ASSEMBLER__)#define C1_CSR $31#define C1_FRID $0#else#define C1_CSR 31#define C1_FRID 0#endif#define S_FCSR_CAUSE 12#define M_FCSR_CAUSE _MM_MAKEMASK(5,S_FCSR_CAUSE)#define V_FCSR_CAUSE(x) _MM_MAKEVALUE(x,S_FCSR_CAUSE)#define G_FCSR_CAUSE(x) _MM_GETVALUE(x,S_FCSR_CAUSE,M_FCSR_CAUSE)#define S_FCSR_ENABLES 7#define M_FCSR_ENABLES _MM_MAKEMASK(5,S_FCSR_ENABLES)#define V_FCSR_ENABLES(x) _MM_MAKEVALUE(x,S_FCSR_ENABLES)#define G_FCSR_ENABLES(x) _MM_GETVALUE(x,S_FCSR_ENABLES,M_FCSR_ENABLES)#define S_FCSR_FLAGS 2#define M_FCSR_FLAGS _MM_MAKEMASK(5,S_FCSR_FLAGS)#define V_FCSR_FLAGS(x) _MM_MAKEVALUE(x,S_FCSR_FLAGS)#define G_FCSR_FLAGS(x) _MM_GETVALUE(x,S_FCSR_FLAGS,M_FCSR_FLAGS)/* * MIPS32 Config Register (select 0) */#define M_CFG_CFG1 _MM_MAKEMASK1(31) /* config1 select1 is impl */#define M_CFG_BE _MM_MAKEMASK1(15) /* big-endian mode */#define S_CFG_AT 13 /* Architecture Type */#define M_CFG_AT _MM_MAKEMASK(2,S_CFG_AT)#define V_CFG_AT(x) _MM_MAKEVALUE(x,S_CFG_AT)#define G_CFG_AT(x) _MM_GETVALUE(x,S_CFG_AT,M_CFG_AT)#define K_CFG_AT_MIPS32 0#define K_CFG_AT_MIPS64_32 1#define K_CFG_AT_MIPS64 2#define S_CFG_AR 10 /* Architecture Revision */#define M_CFG_AR _MM_MAKEMASK(3,S_CFG_AR)#define V_CFG_AR(x) _MM_MAKEVALUE(x,S_CFG_AR)#define G_CFG_AR(x) _MM_GETVALUE(x,S_CFG_AR,M_CFG_AR)#define K_CFG_AR_REV1 0#define S_CFG_MMU 7 /* MMU Type */#define M_CFG_MMU _MM_MAKEMASK(3,S_CFG_MMU)#define V_CFG_MMU(x) _MM_MAKEVALUE(x,S_CFG_MMU)#define G_CFG_MMU(x) _MM_GETVALUE(x,S_CFG_MMU,M_CFG_MMU)#define K_CFG_MMU_NONE 0#define K_CFG_MMU_TLB 1#define K_CFG_MMU_BAT 2#define K_CFG_MMU_FIXED 3#define S_CFG_K0COH 0 /* K0seg coherency */#define M_CFG_K0COH _MM_MAKEMASK(3,S_CFG_K0COH)#define V_CFG_K0COH(x) _MM_MAKEVALUE(x,S_CFG_K0COH)#define G_CFG_K0COH(x) _MM_GETVALUE(x,S_CFG_K0COH,M_CFG_K0COH)#define K_CFG_K0COH_UNCACHED 2#define K_CFG_K0COH_CACHEABLE 3#define K_CFG_K0COH_COHERENT 5/* * MIPS32 Config Register (select 1) */#define M_CFG_CFG2 _MM_MAKEMASK1(31) /* config2 select2 is impl */#define S_CFG_MMUSIZE 25#define M_CFG_MMUSIZE _MM_MAKEMASK(6,S_CFG_MMUSIZE)#define S_CFG_IS 22#define M_CFG_IS _MM_MAKEMASK(3,S_CFG_IS)#define V_CFG_IS(x) _MM_MAKEVALUE(x,S_CFG_IS)#define G_CFG_IS(x) _MM_GETVALUE(x,S_CFG_IS,M_CFG_IS)#define S_CFG_IL 19#define M_CFG_IL _MM_MAKEMASK(3,S_CFG_IL)#define V_CFG_IL(x) _MM_MAKEVALUE(x,S_CFG_IL)#define G_CFG_IL(x) _MM_GETVALUE(x,S_CFG_IL,M_CFG_IL)#define S_CFG_IA 16#define M_CFG_IA _MM_MAKEMASK(3,S_CFG_IA)#define V_CFG_IA(x) _MM_MAKEVALUE(x,S_CFG_IA)#define G_CFG_IA(x) _MM_GETVALUE(x,S_CFG_IA,M_CFG_IA)#define S_CFG_DS 13#define M_CFG_DS _MM_MAKEMASK(3,S_CFG_DS)#define V_CFG_DS(x) _MM_MAKEVALUE(x,S_CFG_DS)#define G_CFG_DS(x) _MM_GETVALUE(x,S_CFG_DS,M_CFG_DS)#define S_CFG_DL 10#define M_CFG_DL _MM_MAKEMASK(3,S_CFG_DL)#define V_CFG_DL(x) _MM_MAKEVALUE(x,S_CFG_DL)#define G_CFG_DL(x) _MM_GETVALUE(x,S_CFG_DL,M_CFG_DL)#define S_CFG_DA 7#define M_CFG_DA _MM_MAKEMASK(3,S_CFG_DA)#define V_CFG_DA(x) _MM_MAKEVALUE(x,S_CFG_DA)#define G_CFG_DA(x) _MM_GETVALUE(x,S_CFG_DA,M_CFG_DA)#define M_CFG_PC _MM_MAKEMASK1(4) /* perf ctrs present */#define M_CFG_WR _MM_MAKEMASK1(3) /* watch regs present */#define M_CFG_CA _MM_MAKEMASK1(2) /* MIPS16 present */#define M_CFG_EP _MM_MAKEMASK1(1) /* EJTAG present */#define M_CFG_FP _MM_MAKEMASK1(0) /* FPU present *//* * Primary Cache TagLo */#define S_TAGLO_PTAG 8#define M_TAGLO_PTAG _MM_MAKEMASK(56,S_TAGLO_PTAG)#define S_TAGLO_PSTATE 6#define M_TAGLO_PSTATE _MM_MAKEMASK(2,S_TAGLO_PSTATE)#define V_TAGLO_PSTATE(x) _MM_MAKEVALUE(x,S_TAGLO_PSTATE)#define G_TAGLO_PSTATE(x) _MM_GETVALUE(x,S_TAGLO_PSTATE,M_TAGLO_PSTATE)#define K_TAGLO_PSTATE_INVAL 0#define K_TAGLO_PSTATE_SHARED 1#define K_TAGLO_PSTATE_CLEAN_EXCL 2#define K_TAGLO_PSTATE_DIRTY_EXCL 3#define M_TAGLO_LOCK _MM_MAKEMASK1(5)#define M_TAGLO_PARITY _MM_MAKEMASK1(0)/* * CP0 CacheErr register */#define M_CERR_DATA _MM_MAKEMASK1(31) /* err in D space */#define M_CERR_SCACHE _MM_MAKEMASK1(30) /* err in l2, not l1 */#define M_CERR_DERR _MM_MAKEMASK1(29) /* data error */#define M_CERR_TERR _MM_MAKEMASK1(28) /* tag error */#define M_CERR_EXTRQ _MM_MAKEMASK1(27) /* external req caused err */#define M_CERR_BPAR _MM_MAKEMASK1(26) /* bus parity err */#define M_CERR_ADATA _MM_MAKEMASK1(25) /* additional data */#define M_CERR_IDX _MM_MAKEMASK(22,0)/* * Primary Cache operations */#define Index_Invalidate_I 0x0 /* 0 0 */#define Index_Writeback_Inv_D 0x1 /* 0 1 */#define Index_Invalidate_SI 0x2 /* 0 2 */#define Index_Writeback_Inv_SD 0x3 /* 0 3 */#define Index_Load_Tag_I 0x4 /* 1 0 */#define Index_Load_Tag_D 0x5 /* 1 1 */#define Index_Load_Tag_SI 0x6 /* 1 2 */#define Index_Load_Tag_SD 0x7 /* 1 3 */#define Index_Store_Tag_I 0x8 /* 2 0 */#define Index_Store_Tag_D 0x9 /* 2 1 */#define Index_Store_Tag_SI 0xA /* 2 2 */#define Index_Store_Tag_SD 0xB /* 2 3 */#define Create_Dirty_Exc_D 0xD /* 3 1 */#define Create_Dirty_Exc_SD 0xF /* 3 3 */#define Hit_Invalidate_I 0x10 /* 4 0 */#define Hit_Invalidate_D 0x11 /* 4 1 */#define Hit_Invalidate_SI 0x12 /* 4 2 */#define Hit_Invalidate_SD 0x13 /* 4 3 */#define Fill_I 0x14 /* 5 0 */#define Hit_Writeback_Inv_D 0x15 /* 5 1 */#define Hit_Writeback_Inv_SD 0x17 /* 5 3 */#define Hit_Writeback_I 0x18 /* 6 0 */#define Hit_Writeback_D 0x19 /* 6 1 */#define Hit_Writeback_SD 0x1B /* 6 3 */#define Hit_Set_Virtual_SI 0x1E /* 7 2 */#define Hit_Set_Virtual_SD 0x1F /* 7 3 *//* Watchpoint Register */#define M_WATCH_PA 0xfffffff8#define M_WATCH_R 0x00000002#define M_WATCH_W 0x00000001/* TLB entries */#define M_TLBHI_ASID _MM_MAKEMASK(8,0)#define M_TLBHI_VPN2 _MM_MAKEMASK(27,13)#define M_TLBLO_G _MM_MAKEMASK1(0)#define M_TLBLO_V _MM_MAKEMASK1(1)#define M_TLBLO_D _MM_MAKEMASK1(2)#define S_TLBLO_CALG 3#define M_TLBLO_CALG _MM_MAKEMASK(3,S_TLBLO_CALG)#define V_TLBLO_CALG(x) _MM_MAKEVALUE(x,S_TLBLO_CALG)#define G_TLBLO_CALG(x) _MM_GETVALUE(x,S_TLBLO_CALG,M_TLBLO_CALG)#define K_CALG_COH_EXCL1_NOL2 0#define K_CALG_COH_SHRL1_NOL2 1#define K_CALG_UNCACHED 2#define K_CALG_NONCOHERENT 3#define K_CALG_COH_EXCL 4#define K_CALG_COH_SHAREABLE 5#define K_CALG_NOTUSED 6#define K_CALG_UNCACHED_ACCEL 7#define S_TLBLO_PFNMASK 6#define M_TLBLO_PFNMASK _MM_MAKEMASK(24,S_TLBLO_PFNMASK)#define V_TLBLO_PFNMASK(x) _MM_MAKEVALUE(x,S_TLBLO_PFNMASK)#define G_TLBLO_PFNMASK(x) _MM_GETVALUE(x,S_TLBLO_PFNMASK,M_TLBLO_PFNMASK)/* * The following Broadcom Custom CP0 Registers appear in the Broadcom * BMIPS330x MIPS32 core. *//* * Broadcom PLLConfig1 Register (22, select 1) */#define S_PLLCFG1_MC 10 /* SoftMIPSPLLCfg */#define M_PLLCFG1_MC _MM_MAKEMASK(22,S_PLLCFG1_MC)#define V_PLLCFG1_MC(x) _MM_MAKEVALUE(x,S_PLLCFG1_MC)#define G_PLLCFG1_MC(x) _MM_GETVALUE(x,S_PLLCFG1_MC,M_PLLCFG1_MC)#define S_PLLCFG1_BC 5 /* SoftISBPLLCfg */#define M_PLLCFG1_BC _MM_MAKEMASK(5,S_PLLCFG1_BC)#define V_PLLCFG1_BC(x) _MM_MAKEVALUE(x,S_PLLCFG1_BC)#define G_PLLCFG1_BC(x) _MM_GETVALUE(x,S_PLLCFG1_BC,M_PLLCFG1_BC)#define S_PLLCFG1_PC 0 /* SoftRefPLLCfg */#define M_PLLCFG1_PC _MM_MAKEMASK(5,S_PLLCFG1_PC)#define V_PLLCFG1_PC(x) _MM_MAKEVALUE(x,S_PLLCFG1_PC)#define G_PLLCFG1_PC(x) _MM_GETVALUE(x,S_PLLCFG1_PC,M_PLLCFG1_PC)/* * Broadcom PLLConfig2 Register (22, select 2) */#define M_PLLCFG2_CR _MM_MAKEMASK1(23) /* Soft1to1ClkRatio */#define S_PLLCFG2_UC 15 /* SoftUSBxPLLCfg */#define M_PLLCFG2_UC _MM_MAKEMASK(8,S_PLLCFG2_UC)#define V_PLLCFG2_UC(x) _MM_MAKEVALUE(x,S_PLLCFG2_UC)#define G_PLLCFG2_UC(x) _MM_GETVALUE(x,S_PLLCFG2_UC,M_PLLCFG2_UC)#define S_PLLCFG2_IC 7 /* SoftIDExPLLCfg */#define M_PLLCFG2_IC _MM_MAKEMASK(8,S_PLLCFG2_IC)#define V_PLLCFG2_IC(x) _MM_MAKEVALUE(x,S_PLLCFG2_IC)#define G_PLLCFG2_IC(x) _MM_GETVALUE(x,S_PLLCFG2_IC,M_PLLCFG2_IC)#define M_PLLCFG2_BE _MM_MAKEMASK1(6) /* ISBxSoftCfgEnable */#define M_PLLCFG2_UE _MM_MAKEMASK1(5) /* USBxSoftCfgEnable */#define M_PLLCFG2_IE _MM_MAKEMASK1(4) /* IDExSoftCfgEnable */#define M_PLLCFG2_CA _MM_MAKEMASK1(3) /* CfgActive */#define M_PLLCFG2_CF _MM_MAKEMASK1(2) /* RefSoftCfgEnable */#define M_PLLCFG2_CI _MM_MAKEMASK1(1) /* ISBSoftCfgEnable */#define M_PLLCFG2_CC _MM_MAKEMASK1(0) /* MIPSSoftCfgEnable *//* * Broadcom ClkSync Register (22, select 3) */#define S_CLKSYNC_CH 16 /* SoftClkCfgHigh */#define M_CLKSYNC_CH _MM_MAKEMASK(16,S_CLKSYNC_CH)#define V_CLKSYNC_CH(x) _MM_MAKEVALUE(x,S_CLKSYNC_CH)#define G_CLKSYNC_CH(x) _MM_GETVALUE(x,S_CLKSYNC_CH,M_CLKSYNC_CH)#define S_CLKSYNC_CL 0 /* SoftClkCfgLow */#define M_CLKSYNC_CL _MM_MAKEMASK(16,S_CLKSYNC_CL)#define V_CLKSYNC_CL(x) _MM_MAKEVALUE(x,S_CLKSYNC_CL)#define G_CLKSYNC_CL(x) _MM_GETVALUE(x,S_CLKSYNC_CL,M_CLKSYNC_CL)/* * Broadcom ISBxPLLConfig3 Register (22, select 4) */#define S_PLLCFG3_AR 23 /* AsyncClkRatio */#define M_PLLCFG3_AR _MM_MAKEMASK(2,S_PLLCFG3_AR)#define V_PLLCFG3_AR(x) _MM_MAKEVALUE(x,S_PLLCFG3_AR)#define G_PLLCFG3_AR(x) _MM_GETVALUE(x,S_PLLCFG3_AR,M_PLLCFG3_AR)#define M_PLLCFG3_SM _MM_MAKEMASK1(22) /* SyncMode */#define S_PLLCFG3_IC 0 /* SoftISBxPLLCfg */#define M_PLLCFG3_IC _MM_MAKEMASK(22,S_PLLCFG3_IC)#define V_PLLCFG3_IC(x) _MM_MAKEVALUE(x,S_PLLCFG3_IC)#define G_PLLCFG3_IC(x) _MM_GETVALUE(x,S_PLLCFG3_IC,M_PLLCFG3_IC)/* * Broadcom BRCMRstConfig Register (22, select 5) */#define M_RSTCFG_SR _MM_MAKEMASK1(18) /* SSMR */#define M_RSTCFG_DT _MM_MAKEMASK1(16) /* BHTD */#define S_RSTCFG_RS 8 /* RStSt */#define M_RSTCFG_RS _MM_MAKEMASK(5,S_RSTCFG_RS)#define V_RSTCFG_RS(x) _MM_MAKEVALUE(x,S_RSTCFG_RS)#define G_RSTCFG_RS(x) _MM_GETVALUE(x,S_RSTCFG_RS,M_RSTCFG_RS)#define K_RST_OTHER 0x00#define K_RST_SH 0x01#define K_RST_SS 0x02#define K_RST_EJTAG 0x04#define K_RST_WDOG 0x08#define K_RST_CRC 0x10#define M_RSTCFG_CR _MM_MAKEMASK1(7) /* RStCr */#define S_RSTCFG_WD 3 /* WBMD */#define M_RSTCFG_WD _MM_MAKEMASK(4,S_RSTCFG_WD)#define V_RSTCFG_WD(x) _MM_MAKEVALUE(x,S_RSTCFG_WD)#define G_RSTCFG_WD(x) _MM_GETVALUE(x,S_RSTCFG_WD,M_RSTCFG_WD)#define M_RSTCFG_SS _MM_MAKEMASK1(2) /* SSR */#define M_RSTCFG_SH _MM_MAKEMASK1(1) /* SHR */#define M_RSTCFG_BR _MM_MAKEMASK1(0) /* BdR */#endif /* _SB_MIPS32_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -