diff --git a/encoding.h b/encoding.h index 0dc34d69..f4e50a01 100644 --- a/encoding.h +++ b/encoding.h @@ -1,81 +1,89 @@ #ifndef RISCV_CSR_ENCODING_H #define RISCV_CSR_ENCODING_H -#define MSTATUS_UIE 0x00000001 -#define MSTATUS_SIE 0x00000002 -#define MSTATUS_HIE 0x00000004 -#define MSTATUS_MIE 0x00000008 -#define MSTATUS_UPIE 0x00000010 -#define MSTATUS_SPIE 0x00000020 -#define MSTATUS_UBE 0x00000040 -#define MSTATUS_MPIE 0x00000080 -#define MSTATUS_SPP 0x00000100 -#define MSTATUS_VS 0x00000600 -#define MSTATUS_MPP 0x00001800 -#define MSTATUS_FS 0x00006000 -#define MSTATUS_XS 0x00018000 -#define MSTATUS_MPRV 0x00020000 -#define MSTATUS_SUM 0x00040000 -#define MSTATUS_MXR 0x00080000 -#define MSTATUS_TVM 0x00100000 -#define MSTATUS_TW 0x00200000 -#define MSTATUS_TSR 0x00400000 -#define MSTATUS_SPELP 0x00800000 -#define MSTATUS_SDT 0x01000000 -#define MSTATUS32_SD 0x80000000 -#define MSTATUS_UXL 0x0000000300000000 -#define MSTATUS_SXL 0x0000000C00000000 -#define MSTATUS_SBE 0x0000001000000000 -#define MSTATUS_MBE 0x0000002000000000 -#define MSTATUS_GVA 0x0000004000000000 -#define MSTATUS_MPV 0x0000008000000000 -#define MSTATUS_MPELP 0x0000020000000000 -#define MSTATUS_MDT 0x0000040000000000 -#define MSTATUS64_SD 0x8000000000000000 - -#define MSTATUSH_SBE 0x00000010 -#define MSTATUSH_MBE 0x00000020 -#define MSTATUSH_GVA 0x00000040 -#define MSTATUSH_MPV 0x00000080 -#define MSTATUSH_MDT 0x00000400 - -#define SSTATUS_UIE 0x00000001 -#define SSTATUS_SIE 0x00000002 -#define SSTATUS_UPIE 0x00000010 -#define SSTATUS_SPIE 0x00000020 -#define SSTATUS_UBE 0x00000040 -#define SSTATUS_SPP 0x00000100 -#define SSTATUS_VS 0x00000600 -#define SSTATUS_FS 0x00006000 -#define SSTATUS_XS 0x00018000 -#define SSTATUS_SUM 0x00040000 -#define SSTATUS_MXR 0x00080000 -#define SSTATUS_SPELP 0x00800000 -#define SSTATUS_SDT 0x01000000 -#define SSTATUS32_SD 0x80000000 -#define SSTATUS_UXL 0x0000000300000000 -#define SSTATUS64_SD 0x8000000000000000 - -#define HSTATUS_VSBE 0x00000020 -#define HSTATUS_GVA 0x00000040 -#define HSTATUS_SPV 0x00000080 -#define HSTATUS_SPVP 0x00000100 -#define HSTATUS_HU 0x00000200 -#define HSTATUS_VGEIN 0x0003f000 -#define HSTATUS_VTVM 0x00100000 -#define HSTATUS_VTW 0x00200000 -#define HSTATUS_VTSR 0x00400000 -#define HSTATUS_HUKTE 0x01000000 -#define HSTATUS_VSXL 0x0000000300000000 -#define HSTATUS_HUPMM 0x0003000000000000 - -#define USTATUS_UIE 0x00000001 -#define USTATUS_UPIE 0x00000010 - -#define MNSTATUS_NMIE 0x00000008 -#define MNSTATUS_MNPV 0x00000080 -#define MNSTATUS_MNPELP 0x00000200 -#define MNSTATUS_MNPP 0x00001800 +#ifdef __ASSEMBLY__ +#define _RISCV_UL(x) x +#define _RISCV_ULL(x) x +#else +#define _RISCV_UL(x) x##UL +#define _RISCV_ULL(x) x##ULL +#endif + +#define MSTATUS_UIE _RISCV_UL(0x00000001) +#define MSTATUS_SIE _RISCV_UL(0x00000002) +#define MSTATUS_HIE _RISCV_UL(0x00000004) +#define MSTATUS_MIE _RISCV_UL(0x00000008) +#define MSTATUS_UPIE _RISCV_UL(0x00000010) +#define MSTATUS_SPIE _RISCV_UL(0x00000020) +#define MSTATUS_UBE _RISCV_UL(0x00000040) +#define MSTATUS_MPIE _RISCV_UL(0x00000080) +#define MSTATUS_SPP _RISCV_UL(0x00000100) +#define MSTATUS_VS _RISCV_UL(0x00000600) +#define MSTATUS_MPP _RISCV_UL(0x00001800) +#define MSTATUS_FS _RISCV_UL(0x00006000) +#define MSTATUS_XS _RISCV_UL(0x00018000) +#define MSTATUS_MPRV _RISCV_UL(0x00020000) +#define MSTATUS_SUM _RISCV_UL(0x00040000) +#define MSTATUS_MXR _RISCV_UL(0x00080000) +#define MSTATUS_TVM _RISCV_UL(0x00100000) +#define MSTATUS_TW _RISCV_UL(0x00200000) +#define MSTATUS_TSR _RISCV_UL(0x00400000) +#define MSTATUS_SPELP _RISCV_UL(0x00800000) +#define MSTATUS_SDT _RISCV_UL(0x01000000) +#define MSTATUS32_SD _RISCV_UL(0x80000000) +#define MSTATUS_UXL _RISCV_ULL(0x0000000300000000) +#define MSTATUS_SXL _RISCV_ULL(0x0000000C00000000) +#define MSTATUS_SBE _RISCV_ULL(0x0000001000000000) +#define MSTATUS_MBE _RISCV_ULL(0x0000002000000000) +#define MSTATUS_GVA _RISCV_ULL(0x0000004000000000) +#define MSTATUS_MPV _RISCV_ULL(0x0000008000000000) +#define MSTATUS_MPELP _RISCV_ULL(0x0000020000000000) +#define MSTATUS_MDT _RISCV_ULL(0x0000040000000000) +#define MSTATUS64_SD _RISCV_ULL(0x8000000000000000) + +#define MSTATUSH_SBE _RISCV_UL(0x00000010) +#define MSTATUSH_MBE _RISCV_UL(0x00000020) +#define MSTATUSH_GVA _RISCV_UL(0x00000040) +#define MSTATUSH_MPV _RISCV_UL(0x00000080) +#define MSTATUSH_MDT _RISCV_UL(0x00000400) + +#define SSTATUS_UIE _RISCV_UL(0x00000001) +#define SSTATUS_SIE _RISCV_UL(0x00000002) +#define SSTATUS_UPIE _RISCV_UL(0x00000010) +#define SSTATUS_SPIE _RISCV_UL(0x00000020) +#define SSTATUS_UBE _RISCV_UL(0x00000040) +#define SSTATUS_SPP _RISCV_UL(0x00000100) +#define SSTATUS_VS _RISCV_UL(0x00000600) +#define SSTATUS_FS _RISCV_UL(0x00006000) +#define SSTATUS_XS _RISCV_UL(0x00018000) +#define SSTATUS_SUM _RISCV_UL(0x00040000) +#define SSTATUS_MXR _RISCV_UL(0x00080000) +#define SSTATUS_SPELP _RISCV_UL(0x00800000) +#define SSTATUS_SDT _RISCV_UL(0x01000000) +#define SSTATUS32_SD _RISCV_UL(0x80000000) +#define SSTATUS_UXL _RISCV_ULL(0x0000000300000000) +#define SSTATUS64_SD _RISCV_ULL(0x8000000000000000) + +#define HSTATUS_VSBE _RISCV_UL(0x00000020) +#define HSTATUS_GVA _RISCV_UL(0x00000040) +#define HSTATUS_SPV _RISCV_UL(0x00000080) +#define HSTATUS_SPVP _RISCV_UL(0x00000100) +#define HSTATUS_HU _RISCV_UL(0x00000200) +#define HSTATUS_VGEIN _RISCV_UL(0x0003f000) +#define HSTATUS_VTVM _RISCV_UL(0x00100000) +#define HSTATUS_VTW _RISCV_UL(0x00200000) +#define HSTATUS_VTSR _RISCV_UL(0x00400000) +#define HSTATUS_HUKTE _RISCV_UL(0x01000000) +#define HSTATUS_VSXL _RISCV_ULL(0x0000000300000000) +#define HSTATUS_HUPMM _RISCV_ULL(0x0003000000000000) + +#define USTATUS_UIE _RISCV_UL(0x00000001) +#define USTATUS_UPIE _RISCV_UL(0x00000010) + +#define MNSTATUS_NMIE _RISCV_UL(0x00000008) +#define MNSTATUS_MNPV _RISCV_UL(0x00000080) +#define MNSTATUS_MNPELP _RISCV_UL(0x00000200) +#define MNSTATUS_MNPP _RISCV_UL(0x00001800) #define DCSR_XDEBUGVER (15U<<28) #define DCSR_EXTCAUSE (7<<24) @@ -107,9 +115,9 @@ #define DCSR_EXTCAUSE_CRITERR 0 -#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4)) -#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5)) -#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11)) +#define MCONTROL_TYPE(xlen) (_RISCV_ULL(0xf)<<((xlen)-4)) +#define MCONTROL_DMODE(xlen) (_RISCV_ULL(1)<<((xlen)-5)) +#define MCONTROL_MASKMAX(xlen) (_RISCV_ULL(0x3f)<<((xlen)-11)) #define MCONTROL_SELECT (1<<19) #define MCONTROL_TIMING (1<<18) @@ -154,8 +162,8 @@ #define MIP_MEIP (1 << IRQ_M_EXT) #define MIP_SGEIP (1 << IRQ_S_GEXT) #define MIP_LCOFIP (1 << IRQ_LCOF) -#define MIP_RAS_LOW_PRIO (1ULL << IRQ_RAS_LOW_PRIO) -#define MIP_RAS_HIGH_PRIO (1ULL << IRQ_RAS_HIGH_PRIO) +#define MIP_RAS_LOW_PRIO (_RISCV_ULL(1) << IRQ_RAS_LOW_PRIO) +#define MIP_RAS_HIGH_PRIO (_RISCV_ULL(1) << IRQ_RAS_HIGH_PRIO) #define MIP_S_MASK (MIP_SSIP | MIP_STIP | MIP_SEIP) #define MIP_VS_MASK (MIP_VSSIP | MIP_VSTIP | MIP_VSEIP) @@ -166,61 +174,61 @@ #define SIP_SSIP MIP_SSIP #define SIP_STIP MIP_STIP -#define MENVCFG_FIOM 0x00000001 -#define MENVCFG_LPE 0x00000004 -#define MENVCFG_SSE 0x00000008 -#define MENVCFG_CBIE 0x00000030 -#define MENVCFG_CBCFE 0x00000040 -#define MENVCFG_CBZE 0x00000080 -#define MENVCFG_PMM 0x0000000300000000 -#define MENVCFG_DTE 0x0800000000000000 -#define MENVCFG_CDE 0x1000000000000000 -#define MENVCFG_ADUE 0x2000000000000000 -#define MENVCFG_PBMTE 0x4000000000000000 -#define MENVCFG_STCE 0x8000000000000000 - -#define MENVCFGH_DTE 0x08000000 -#define MENVCFGH_CDE 0x10000000 -#define MENVCFGH_ADUE 0x20000000 -#define MENVCFGH_PBMTE 0x40000000 -#define MENVCFGH_STCE 0x80000000 - -#define MSTATEEN0_CS 0x00000001 -#define MSTATEEN0_FCSR 0x00000002 -#define MSTATEEN0_JVT 0x00000004 -#define MSTATEEN0_CTR 0x0040000000000000 -#define MSTATEEN0_PRIV114 0x0080000000000000 -#define MSTATEEN0_PRIV113 0x0100000000000000 -#define MSTATEEN0_HCONTEXT 0x0200000000000000 -#define MSTATEEN0_IMSIC 0x0400000000000000 -#define MSTATEEN0_AIA 0x0800000000000000 -#define MSTATEEN0_CSRIND 0x1000000000000000 -#define MSTATEEN0_HENVCFG 0x4000000000000000 -#define MSTATEEN_HSTATEEN 0x8000000000000000 - -#define MSTATEEN0H_CTR 0x00400000 -#define MSTATEEN0H_PRIV114 0x00800000 -#define MSTATEEN0H_PRIV113 0x01000000 -#define MSTATEEN0H_HCONTEXT 0x02000000 -#define MSTATEEN0H_IMSIC 0x04000000 -#define MSTATEEN0H_AIA 0x08000000 -#define MSTATEEN0H_CSRIND 0x10000000 -#define MSTATEEN0H_HENVCFG 0x40000000 -#define MSTATEENH_HSTATEEN 0x80000000 - -#define MHPMEVENT_VUINH 0x0400000000000000 -#define MHPMEVENT_VSINH 0x0800000000000000 -#define MHPMEVENT_UINH 0x1000000000000000 -#define MHPMEVENT_SINH 0x2000000000000000 -#define MHPMEVENT_MINH 0x4000000000000000 -#define MHPMEVENT_OF 0x8000000000000000 - -#define MHPMEVENTH_VUINH 0x04000000 -#define MHPMEVENTH_VSINH 0x08000000 -#define MHPMEVENTH_UINH 0x10000000 -#define MHPMEVENTH_SINH 0x20000000 -#define MHPMEVENTH_MINH 0x40000000 -#define MHPMEVENTH_OF 0x80000000 +#define MENVCFG_FIOM _RISCV_UL(0x00000001) +#define MENVCFG_LPE _RISCV_UL(0x00000004) +#define MENVCFG_SSE _RISCV_UL(0x00000008) +#define MENVCFG_CBIE _RISCV_UL(0x00000030) +#define MENVCFG_CBCFE _RISCV_UL(0x00000040) +#define MENVCFG_CBZE _RISCV_UL(0x00000080) +#define MENVCFG_PMM _RISCV_ULL(0x0000000300000000) +#define MENVCFG_DTE _RISCV_ULL(0x0800000000000000) +#define MENVCFG_CDE _RISCV_ULL(0x1000000000000000) +#define MENVCFG_ADUE _RISCV_ULL(0x2000000000000000) +#define MENVCFG_PBMTE _RISCV_ULL(0x4000000000000000) +#define MENVCFG_STCE _RISCV_ULL(0x8000000000000000) + +#define MENVCFGH_DTE _RISCV_UL(0x08000000) +#define MENVCFGH_CDE _RISCV_UL(0x10000000) +#define MENVCFGH_ADUE _RISCV_UL(0x20000000) +#define MENVCFGH_PBMTE _RISCV_UL(0x40000000) +#define MENVCFGH_STCE _RISCV_UL(0x80000000) + +#define MSTATEEN0_CS _RISCV_UL(0x00000001) +#define MSTATEEN0_FCSR _RISCV_UL(0x00000002) +#define MSTATEEN0_JVT _RISCV_UL(0x00000004) +#define MSTATEEN0_CTR _RISCV_ULL(0x0040000000000000) +#define MSTATEEN0_PRIV114 _RISCV_ULL(0x0080000000000000) +#define MSTATEEN0_PRIV113 _RISCV_ULL(0x0100000000000000) +#define MSTATEEN0_HCONTEXT _RISCV_ULL(0x0200000000000000) +#define MSTATEEN0_IMSIC _RISCV_ULL(0x0400000000000000) +#define MSTATEEN0_AIA _RISCV_ULL(0x0800000000000000) +#define MSTATEEN0_CSRIND _RISCV_ULL(0x1000000000000000) +#define MSTATEEN0_HENVCFG _RISCV_ULL(0x4000000000000000) +#define MSTATEEN_HSTATEEN _RISCV_ULL(0x8000000000000000) + +#define MSTATEEN0H_CTR _RISCV_UL(0x00400000) +#define MSTATEEN0H_PRIV114 _RISCV_UL(0x00800000) +#define MSTATEEN0H_PRIV113 _RISCV_UL(0x01000000) +#define MSTATEEN0H_HCONTEXT _RISCV_UL(0x02000000) +#define MSTATEEN0H_IMSIC _RISCV_UL(0x04000000) +#define MSTATEEN0H_AIA _RISCV_UL(0x08000000) +#define MSTATEEN0H_CSRIND _RISCV_UL(0x10000000) +#define MSTATEEN0H_HENVCFG _RISCV_UL(0x40000000) +#define MSTATEENH_HSTATEEN _RISCV_UL(0x80000000) + +#define MHPMEVENT_VUINH _RISCV_ULL(0x0400000000000000) +#define MHPMEVENT_VSINH _RISCV_ULL(0x0800000000000000) +#define MHPMEVENT_UINH _RISCV_ULL(0x1000000000000000) +#define MHPMEVENT_SINH _RISCV_ULL(0x2000000000000000) +#define MHPMEVENT_MINH _RISCV_ULL(0x4000000000000000) +#define MHPMEVENT_OF _RISCV_ULL(0x8000000000000000) + +#define MHPMEVENTH_VUINH _RISCV_UL(0x04000000) +#define MHPMEVENTH_VSINH _RISCV_UL(0x08000000) +#define MHPMEVENTH_UINH _RISCV_UL(0x10000000) +#define MHPMEVENTH_SINH _RISCV_UL(0x20000000) +#define MHPMEVENTH_MINH _RISCV_UL(0x40000000) +#define MHPMEVENTH_OF _RISCV_UL(0x80000000) #define MCOUNTEREN_CY_SHIFT 0 #define MCOUNTEREN_TIME_SHIFT 1 @@ -233,100 +241,100 @@ #define MCOUNTINHIBIT_CY MCOUNTEREN_CY #define MCOUNTINHIBIT_IR MCOUNTEREN_IR -#define HENVCFG_FIOM 0x00000001 -#define HENVCFG_LPE 0x00000004 -#define HENVCFG_SSE 0x00000008 -#define HENVCFG_CBIE 0x00000030 -#define HENVCFG_CBCFE 0x00000040 -#define HENVCFG_CBZE 0x00000080 -#define HENVCFG_PMM 0x0000000300000000 -#define HENVCFG_DTE 0x0800000000000000 -#define HENVCFG_ADUE 0x2000000000000000 -#define HENVCFG_PBMTE 0x4000000000000000 -#define HENVCFG_STCE 0x8000000000000000 - -#define HENVCFGH_DTE 0x08000000 -#define HENVCFGH_ADUE 0x20000000 -#define HENVCFGH_PBMTE 0x40000000 -#define HENVCFGH_STCE 0x80000000 - -#define SISELECT_SMCDELEG_START 0x40 -#define SISELECT_SMCDELEG_UNUSED 0x41 -#define SISELECT_SMCDELEG_INSTRET 0x42 -#define SISELECT_SMCDELEG_INSTRETCFG 0x42 +#define HENVCFG_FIOM _RISCV_UL(0x00000001) +#define HENVCFG_LPE _RISCV_UL(0x00000004) +#define HENVCFG_SSE _RISCV_UL(0x00000008) +#define HENVCFG_CBIE _RISCV_UL(0x00000030) +#define HENVCFG_CBCFE _RISCV_UL(0x00000040) +#define HENVCFG_CBZE _RISCV_UL(0x00000080) +#define HENVCFG_PMM _RISCV_ULL(0x0000000300000000) +#define HENVCFG_DTE _RISCV_ULL(0x0800000000000000) +#define HENVCFG_ADUE _RISCV_ULL(0x2000000000000000) +#define HENVCFG_PBMTE _RISCV_ULL(0x4000000000000000) +#define HENVCFG_STCE _RISCV_ULL(0x8000000000000000) + +#define HENVCFGH_DTE _RISCV_UL(0x08000000) +#define HENVCFGH_ADUE _RISCV_UL(0x20000000) +#define HENVCFGH_PBMTE _RISCV_UL(0x40000000) +#define HENVCFGH_STCE _RISCV_UL(0x80000000) + +#define SISELECT_SMCDELEG_START _RISCV_UL(0x40) +#define SISELECT_SMCDELEG_UNUSED _RISCV_UL(0x41) +#define SISELECT_SMCDELEG_INSTRET _RISCV_UL(0x42) +#define SISELECT_SMCDELEG_INSTRETCFG _RISCV_UL(0x42) /* * ?iselect values for hpmcounters4..31 and hpmevent4..31 * can easily computed, and were elided for brevity. */ -#define SISELECT_SMCDELEG_HPMCOUNTER_3 0x43 -#define SISELECT_SMCDELEG_HPMEVENT_3 0x43 -#define SISELECT_SMCDELEG_END 0x5f - -#define MISELECT_IPRIO 0x30 -#define MISELECT_IPRIO_TOP 0x3f -#define MISELECT_IMSIC 0x70 -#define MISELECT_IMSIC_TOP 0xff - -#define SISELECT_IPRIO 0x30 -#define SISELECT_IPRIO_TOP 0x3f -#define SISELECT_IMSIC 0x70 -#define SISELECT_IMSIC_TOP 0xff - -#define VSISELECT_IMSIC 0x70 -#define VSISELECT_IMSIC_TOP 0xff - -#define HSTATEEN0_CS 0x00000001 -#define HSTATEEN0_FCSR 0x00000002 -#define HSTATEEN0_JVT 0x00000004 -#define HSTATEEN0_CTR 0x0040000000000000 -#define HSTATEEN0_SCONTEXT 0x0200000000000000 -#define HSTATEEN0_IMSIC 0x0400000000000000 -#define HSTATEEN0_AIA 0x0800000000000000 -#define HSTATEEN0_CSRIND 0x1000000000000000 -#define HSTATEEN0_SENVCFG 0x4000000000000000 -#define HSTATEEN_SSTATEEN 0x8000000000000000 - -#define HSTATEEN0H_CTR 0x00400000 -#define HSTATEEN0H_SCONTEXT 0x02000000 -#define HSTATEEN0H_IMSIC 0x04000000 -#define HSTATEEN0H_AIA 0x08000000 -#define HSTATEEN0H_CSRIND 0x10000000 -#define HSTATEEN0H_SENVCFG 0x40000000 -#define HSTATEENH_SSTATEEN 0x80000000 - -#define SENVCFG_FIOM 0x00000001 -#define SENVCFG_LPE 0x00000004 -#define SENVCFG_SSE 0x00000008 -#define SENVCFG_CBIE 0x00000030 -#define SENVCFG_CBCFE 0x00000040 -#define SENVCFG_CBZE 0x00000080 -#define SENVCFG_UKTE 0x00000100 -#define SENVCFG_PMM 0x0000000300000000 - -#define SSTATEEN0_CS 0x00000001 -#define SSTATEEN0_FCSR 0x00000002 -#define SSTATEEN0_JVT 0x00000004 - -#define MSECCFG_MML 0x00000001 -#define MSECCFG_MMWP 0x00000002 -#define MSECCFG_RLB 0x00000004 -#define MSECCFG_USEED 0x00000100 -#define MSECCFG_SSEED 0x00000200 -#define MSECCFG_MLPE 0x00000400 -#define MSECCFG_PMM 0x0000000300000000 +#define SISELECT_SMCDELEG_HPMCOUNTER_3 _RISCV_UL(0x43) +#define SISELECT_SMCDELEG_HPMEVENT_3 _RISCV_UL(0x43) +#define SISELECT_SMCDELEG_END _RISCV_UL(0x5f) + +#define MISELECT_IPRIO _RISCV_UL(0x30) +#define MISELECT_IPRIO_TOP _RISCV_UL(0x3f) +#define MISELECT_IMSIC _RISCV_UL(0x70) +#define MISELECT_IMSIC_TOP _RISCV_UL(0xff) + +#define SISELECT_IPRIO _RISCV_UL(0x30) +#define SISELECT_IPRIO_TOP _RISCV_UL(0x3f) +#define SISELECT_IMSIC _RISCV_UL(0x70) +#define SISELECT_IMSIC_TOP _RISCV_UL(0xff) + +#define VSISELECT_IMSIC _RISCV_UL(0x70) +#define VSISELECT_IMSIC_TOP _RISCV_UL(0xff) + +#define HSTATEEN0_CS _RISCV_UL(0x00000001) +#define HSTATEEN0_FCSR _RISCV_UL(0x00000002) +#define HSTATEEN0_JVT _RISCV_UL(0x00000004) +#define HSTATEEN0_CTR _RISCV_ULL(0x0040000000000000) +#define HSTATEEN0_SCONTEXT _RISCV_ULL(0x0200000000000000) +#define HSTATEEN0_IMSIC _RISCV_ULL(0x0400000000000000) +#define HSTATEEN0_AIA _RISCV_ULL(0x0800000000000000) +#define HSTATEEN0_CSRIND _RISCV_ULL(0x1000000000000000) +#define HSTATEEN0_SENVCFG _RISCV_ULL(0x4000000000000000) +#define HSTATEEN_SSTATEEN _RISCV_ULL(0x8000000000000000) + +#define HSTATEEN0H_CTR _RISCV_UL(0x00400000) +#define HSTATEEN0H_SCONTEXT _RISCV_UL(0x02000000) +#define HSTATEEN0H_IMSIC _RISCV_UL(0x04000000) +#define HSTATEEN0H_AIA _RISCV_UL(0x08000000) +#define HSTATEEN0H_CSRIND _RISCV_UL(0x10000000) +#define HSTATEEN0H_SENVCFG _RISCV_UL(0x40000000) +#define HSTATEENH_SSTATEEN _RISCV_UL(0x80000000) + +#define SENVCFG_FIOM _RISCV_UL(0x00000001) +#define SENVCFG_LPE _RISCV_UL(0x00000004) +#define SENVCFG_SSE _RISCV_UL(0x00000008) +#define SENVCFG_CBIE _RISCV_UL(0x00000030) +#define SENVCFG_CBCFE _RISCV_UL(0x00000040) +#define SENVCFG_CBZE _RISCV_UL(0x00000080) +#define SENVCFG_UKTE _RISCV_UL(0x00000100) +#define SENVCFG_PMM _RISCV_ULL(0x0000000300000000) + +#define SSTATEEN0_CS _RISCV_UL(0x00000001) +#define SSTATEEN0_FCSR _RISCV_UL(0x00000002) +#define SSTATEEN0_JVT _RISCV_UL(0x00000004) + +#define MSECCFG_MML _RISCV_UL(0x00000001) +#define MSECCFG_MMWP _RISCV_UL(0x00000002) +#define MSECCFG_RLB _RISCV_UL(0x00000004) +#define MSECCFG_USEED _RISCV_UL(0x00000100) +#define MSECCFG_SSEED _RISCV_UL(0x00000200) +#define MSECCFG_MLPE _RISCV_UL(0x00000400) +#define MSECCFG_PMM _RISCV_ULL(0x0000000300000000) /* jvt fields */ -#define JVT_MODE 0x3F +#define JVT_MODE _RISCV_UL(0x3F) #define JVT_BASE (~0x3F) -#define HVICTL_VTI 0x40000000 -#define HVICTL_IID 0x003F0000 -#define HVICTL_DPR 0x00000200 -#define HVICTL_IPRIOM 0x00000100 -#define HVICTL_IPRIO 0x000000FF +#define HVICTL_VTI _RISCV_UL(0x40000000) +#define HVICTL_IID _RISCV_UL(0x003F0000) +#define HVICTL_DPR _RISCV_UL(0x00000200) +#define HVICTL_IPRIOM _RISCV_UL(0x00000100) +#define HVICTL_IPRIO _RISCV_UL(0x000000FF) -#define MTOPI_IID 0x0FFF0000 -#define MTOPI_IPRIO 0x000000FF +#define MTOPI_IID _RISCV_UL(0x0FFF0000) +#define MTOPI_IPRIO _RISCV_UL(0x000000FF) #define PRV_U 0 #define PRV_S 1 @@ -334,12 +342,12 @@ #define PRV_HS (PRV_S + 1) -#define SATP32_MODE 0x80000000 -#define SATP32_ASID 0x7FC00000 -#define SATP32_PPN 0x003FFFFF -#define SATP64_MODE 0xF000000000000000 -#define SATP64_ASID 0x0FFFF00000000000 -#define SATP64_PPN 0x00000FFFFFFFFFFF +#define SATP32_MODE _RISCV_UL(0x80000000) +#define SATP32_ASID _RISCV_UL(0x7FC00000) +#define SATP32_PPN _RISCV_UL(0x003FFFFF) +#define SATP64_MODE _RISCV_ULL(0xF000000000000000) +#define SATP64_ASID _RISCV_ULL(0x0FFFF00000000000) +#define SATP64_PPN _RISCV_ULL(0x00000FFFFFFFFFFF) #define SATP_MODE_OFF 0 #define SATP_MODE_SV32 1 @@ -348,13 +356,13 @@ #define SATP_MODE_SV57 10 #define SATP_MODE_SV64 11 -#define HGATP32_MODE 0x80000000 -#define HGATP32_VMID 0x1FC00000 -#define HGATP32_PPN 0x003FFFFF +#define HGATP32_MODE _RISCV_UL(0x80000000) +#define HGATP32_VMID _RISCV_UL(0x1FC00000) +#define HGATP32_PPN _RISCV_UL(0x003FFFFF) -#define HGATP64_MODE 0xF000000000000000 -#define HGATP64_VMID 0x03FFF00000000000 -#define HGATP64_PPN 0x00000FFFFFFFFFFF +#define HGATP64_MODE _RISCV_ULL(0xF000000000000000) +#define HGATP64_VMID _RISCV_ULL(0x03FFF00000000000) +#define HGATP64_PPN _RISCV_ULL(0x00000FFFFFFFFFFF) #define HGATP_MODE_OFF 0 #define HGATP_MODE_SV32X4 1 @@ -362,101 +370,101 @@ #define HGATP_MODE_SV48X4 9 #define HGATP_MODE_SV57X4 10 -#define PMP_R 0x01 -#define PMP_W 0x02 -#define PMP_X 0x04 -#define PMP_A 0x18 -#define PMP_MT 0x60 -#define PMP_L 0x80 +#define PMP_R _RISCV_UL(0x01) +#define PMP_W _RISCV_UL(0x02) +#define PMP_X _RISCV_UL(0x04) +#define PMP_A _RISCV_UL(0x18) +#define PMP_MT _RISCV_UL(0x60) +#define PMP_L _RISCV_UL(0x80) #define PMP_SHIFT 2 -#define PMP_TOR 0x08 -#define PMP_NA4 0x10 -#define PMP_NAPOT 0x18 - -#define SPMP_U 0x100 -#define SPMP_SHARED 0x200 - -#define MCTRCTL_U 0x0000000000000001 -#define MCTRCTL_S 0x0000000000000002 -#define MCTRCTL_M 0x0000000000000004 -#define MCTRCTL_RASEMU 0x0000000000000080 -#define MCTRCTL_STE 0x0000000000000100 -#define MCTRCTL_MTE 0x0000000000000200 -#define MCTRCTL_BPFRZ 0x0000000000000800 -#define MCTRCTL_LCOFIFRZ 0x0000000000001000 -#define MCTRCTL_EXCINH 0x0000000200000000 -#define MCTRCTL_INTRINH 0x0000000400000000 -#define MCTRCTL_TRETINH 0x0000000800000000 -#define MCTRCTL_NTBREN 0x0000001000000000 -#define MCTRCTL_TKBRINH 0x0000002000000000 -#define MCTRCTL_INDCALLINH 0x0000010000000000 -#define MCTRCTL_DIRCALLINH 0x0000020000000000 -#define MCTRCTL_INDJMPINH 0x0000040000000000 -#define MCTRCTL_DIRJMPINH 0x0000080000000000 -#define MCTRCTL_CORSWAPINH 0x0000100000000000 -#define MCTRCTL_RETINH 0x0000200000000000 -#define MCTRCTL_INDLJMPINH 0x0000400000000000 -#define MCTRCTL_DIRLJMPINH 0x0000800000000000 -#define MCTRCTL_CUSTOM 0xF000000000000000 - -#define SCTRCTL_U 0x0000000000000001 -#define SCTRCTL_S 0x0000000000000002 -#define SCTRCTL_RASEMU 0x0000000000000080 -#define SCTRCTL_STE 0x0000000000000100 -#define SCTRCTL_BPFRZ 0x0000000000000800 -#define SCTRCTL_LCOFIFRZ 0x0000000000001000 -#define SCTRCTL_EXCINH 0x0000000200000000 -#define SCTRCTL_INTRINH 0x0000000400000000 -#define SCTRCTL_TRETINH 0x0000000800000000 -#define SCTRCTL_NTBREN 0x0000001000000000 -#define SCTRCTL_TKBRINH 0x0000002000000000 -#define SCTRCTL_INDCALLINH 0x0000010000000000 -#define SCTRCTL_DIRCALLINH 0x0000020000000000 -#define SCTRCTL_INDJMPINH 0x0000040000000000 -#define SCTRCTL_DIRJMPINH 0x0000080000000000 -#define SCTRCTL_CORSWAPINH 0x0000100000000000 -#define SCTRCTL_RETINH 0x0000200000000000 -#define SCTRCTL_INDLJMPINH 0x0000400000000000 -#define SCTRCTL_DIRLJMPINH 0x0000800000000000 - -#define VSCTRCTL_U 0x0000000000000001 -#define VSCTRCTL_S 0x0000000000000002 -#define VSCTRCTL_RASEMU 0x0000000000000080 -#define VSCTRCTL_STE 0x0000000000000100 -#define VSCTRCTL_BPFRZ 0x0000000000000800 -#define VSCTRCTL_LCOFIFRZ 0x0000000000001000 -#define VSCTRCTL_EXCINH 0x0000000200000000 -#define VSCTRCTL_INTRINH 0x0000000400000000 -#define VSCTRCTL_TRETINH 0x0000000800000000 -#define VSCTRCTL_NTBREN 0x0000001000000000 -#define VSCTRCTL_TKBRINH 0x0000002000000000 -#define VSCTRCTL_INDCALLINH 0x0000010000000000 -#define VSCTRCTL_DIRCALLINH 0x0000020000000000 -#define VSCTRCTL_INDJMPINH 0x0000040000000000 -#define VSCTRCTL_DIRJMPINH 0x0000080000000000 -#define VSCTRCTL_CORSWAPINH 0x0000100000000000 -#define VSCTRCTL_RETINH 0x0000200000000000 -#define VSCTRCTL_INDLJMPINH 0x0000400000000000 -#define VSCTRCTL_DIRLJMPINH 0x0000800000000000 -#define VSCTRCTL_CUSTOM 0xF000000000000000 - -#define SCTRDEPTH_DEPTH 0x00000007 - -#define SCTRSTATUS_WRPTR 0x000000FF -#define SCTRSTATUS_FROZEN 0x80000000 - -#define SCTR_ENTRY_BASE 0x200 - -#define SCTR_SOURCE_V 0x0000000000000001 -#define SCTR_SOURCE_PC 0xFFFFFFFFFFFFFFFE - -#define SCTR_TARGET_MISP 0x0000000000000001 -#define SCTR_TARGET_PC 0xFFFFFFFFFFFFFFFE - -#define SCTR_DATA_TYPE 0x000000000000000F -#define SCTR_DATA_CCV 0x0000000000008000 -#define SCTR_DATA_CC 0x00000000FFFF0000 +#define PMP_TOR _RISCV_UL(0x08) +#define PMP_NA4 _RISCV_UL(0x10) +#define PMP_NAPOT _RISCV_UL(0x18) + +#define SPMP_U _RISCV_UL(0x100) +#define SPMP_SHARED _RISCV_UL(0x200) + +#define MCTRCTL_U _RISCV_ULL(0x0000000000000001) +#define MCTRCTL_S _RISCV_ULL(0x0000000000000002) +#define MCTRCTL_M _RISCV_ULL(0x0000000000000004) +#define MCTRCTL_RASEMU _RISCV_ULL(0x0000000000000080) +#define MCTRCTL_STE _RISCV_ULL(0x0000000000000100) +#define MCTRCTL_MTE _RISCV_ULL(0x0000000000000200) +#define MCTRCTL_BPFRZ _RISCV_ULL(0x0000000000000800) +#define MCTRCTL_LCOFIFRZ _RISCV_ULL(0x0000000000001000) +#define MCTRCTL_EXCINH _RISCV_ULL(0x0000000200000000) +#define MCTRCTL_INTRINH _RISCV_ULL(0x0000000400000000) +#define MCTRCTL_TRETINH _RISCV_ULL(0x0000000800000000) +#define MCTRCTL_NTBREN _RISCV_ULL(0x0000001000000000) +#define MCTRCTL_TKBRINH _RISCV_ULL(0x0000002000000000) +#define MCTRCTL_INDCALLINH _RISCV_ULL(0x0000010000000000) +#define MCTRCTL_DIRCALLINH _RISCV_ULL(0x0000020000000000) +#define MCTRCTL_INDJMPINH _RISCV_ULL(0x0000040000000000) +#define MCTRCTL_DIRJMPINH _RISCV_ULL(0x0000080000000000) +#define MCTRCTL_CORSWAPINH _RISCV_ULL(0x0000100000000000) +#define MCTRCTL_RETINH _RISCV_ULL(0x0000200000000000) +#define MCTRCTL_INDLJMPINH _RISCV_ULL(0x0000400000000000) +#define MCTRCTL_DIRLJMPINH _RISCV_ULL(0x0000800000000000) +#define MCTRCTL_CUSTOM _RISCV_ULL(0xF000000000000000) + +#define SCTRCTL_U _RISCV_ULL(0x0000000000000001) +#define SCTRCTL_S _RISCV_ULL(0x0000000000000002) +#define SCTRCTL_RASEMU _RISCV_ULL(0x0000000000000080) +#define SCTRCTL_STE _RISCV_ULL(0x0000000000000100) +#define SCTRCTL_BPFRZ _RISCV_ULL(0x0000000000000800) +#define SCTRCTL_LCOFIFRZ _RISCV_ULL(0x0000000000001000) +#define SCTRCTL_EXCINH _RISCV_ULL(0x0000000200000000) +#define SCTRCTL_INTRINH _RISCV_ULL(0x0000000400000000) +#define SCTRCTL_TRETINH _RISCV_ULL(0x0000000800000000) +#define SCTRCTL_NTBREN _RISCV_ULL(0x0000001000000000) +#define SCTRCTL_TKBRINH _RISCV_ULL(0x0000002000000000) +#define SCTRCTL_INDCALLINH _RISCV_ULL(0x0000010000000000) +#define SCTRCTL_DIRCALLINH _RISCV_ULL(0x0000020000000000) +#define SCTRCTL_INDJMPINH _RISCV_ULL(0x0000040000000000) +#define SCTRCTL_DIRJMPINH _RISCV_ULL(0x0000080000000000) +#define SCTRCTL_CORSWAPINH _RISCV_ULL(0x0000100000000000) +#define SCTRCTL_RETINH _RISCV_ULL(0x0000200000000000) +#define SCTRCTL_INDLJMPINH _RISCV_ULL(0x0000400000000000) +#define SCTRCTL_DIRLJMPINH _RISCV_ULL(0x0000800000000000) + +#define VSCTRCTL_U _RISCV_ULL(0x0000000000000001) +#define VSCTRCTL_S _RISCV_ULL(0x0000000000000002) +#define VSCTRCTL_RASEMU _RISCV_ULL(0x0000000000000080) +#define VSCTRCTL_STE _RISCV_ULL(0x0000000000000100) +#define VSCTRCTL_BPFRZ _RISCV_ULL(0x0000000000000800) +#define VSCTRCTL_LCOFIFRZ _RISCV_ULL(0x0000000000001000) +#define VSCTRCTL_EXCINH _RISCV_ULL(0x0000000200000000) +#define VSCTRCTL_INTRINH _RISCV_ULL(0x0000000400000000) +#define VSCTRCTL_TRETINH _RISCV_ULL(0x0000000800000000) +#define VSCTRCTL_NTBREN _RISCV_ULL(0x0000001000000000) +#define VSCTRCTL_TKBRINH _RISCV_ULL(0x0000002000000000) +#define VSCTRCTL_INDCALLINH _RISCV_ULL(0x0000010000000000) +#define VSCTRCTL_DIRCALLINH _RISCV_ULL(0x0000020000000000) +#define VSCTRCTL_INDJMPINH _RISCV_ULL(0x0000040000000000) +#define VSCTRCTL_DIRJMPINH _RISCV_ULL(0x0000080000000000) +#define VSCTRCTL_CORSWAPINH _RISCV_ULL(0x0000100000000000) +#define VSCTRCTL_RETINH _RISCV_ULL(0x0000200000000000) +#define VSCTRCTL_INDLJMPINH _RISCV_ULL(0x0000400000000000) +#define VSCTRCTL_DIRLJMPINH _RISCV_ULL(0x0000800000000000) +#define VSCTRCTL_CUSTOM _RISCV_ULL(0xF000000000000000) + +#define SCTRDEPTH_DEPTH _RISCV_UL(0x00000007) + +#define SCTRSTATUS_WRPTR _RISCV_UL(0x000000FF) +#define SCTRSTATUS_FROZEN _RISCV_UL(0x80000000) + +#define SCTR_ENTRY_BASE _RISCV_UL(0x200) + +#define SCTR_SOURCE_V _RISCV_ULL(0x0000000000000001) +#define SCTR_SOURCE_PC _RISCV_ULL(0xFFFFFFFFFFFFFFFE) + +#define SCTR_TARGET_MISP _RISCV_ULL(0x0000000000000001) +#define SCTR_TARGET_PC _RISCV_ULL(0xFFFFFFFFFFFFFFFE) + +#define SCTR_DATA_TYPE _RISCV_ULL(0x000000000000000F) +#define SCTR_DATA_CCV _RISCV_ULL(0x0000000000008000) +#define SCTR_DATA_CC _RISCV_ULL(0x00000000FFFF0000) #define IRQ_U_SOFT 0 #define IRQ_S_SOFT 1 @@ -486,19 +494,19 @@ #define PTE_A 0x040 /* Accessed */ #define PTE_D 0x080 /* Dirty */ #define PTE_SOFT 0x300 /* Reserved for Software */ -#define PTE_SVRSW60T59B 0x1800000000000000 /* Svrsw60t59b: Reserved for software use */ -#define PTE_RSVD 0x07C0000000000000 /* Reserved for future standard use */ -#define PTE_PBMT 0x6000000000000000 /* Svpbmt: Page-based memory types */ -#define PTE_N 0x8000000000000000 /* Svnapot: NAPOT translation contiguity */ -#define PTE_ATTR 0xFFC0000000000000 /* All attributes and reserved bits */ +#define PTE_SVRSW60T59B _RISCV_ULL(0x1800000000000000) /* Svrsw60t59b: Reserved for software use */ +#define PTE_RSVD _RISCV_ULL(0x07C0000000000000) /* Reserved for future standard use */ +#define PTE_PBMT _RISCV_ULL(0x6000000000000000) /* Svpbmt: Page-based memory types */ +#define PTE_N _RISCV_ULL(0x8000000000000000) /* Svnapot: NAPOT translation contiguity */ +#define PTE_ATTR _RISCV_ULL(0xFFC0000000000000) /* All attributes and reserved bits */ #define PTE_PPN_SHIFT 10 #define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V) /* srmcfg CSR fields */ -#define SRMCFG_RCID 0x00000FFF -#define SRMCFG_MCID 0x0FFF0000 +#define SRMCFG_RCID _RISCV_UL(0x00000FFF) +#define SRMCFG_MCID _RISCV_UL(0x0FFF0000) /* software check exception xtval codes */ #define LANDING_PAD_FAULT 2