[PATCH v4 1/4] include: adding support for Zicfilp / Zicfiss encodings

Atish Kumar Patra atishp at rivosinc.com
Mon Sep 9 16:25:29 PDT 2024


On Fri, Aug 23, 2024 at 11:47 AM Deepak Gupta <debug at rivosinc.com> wrote:
>
> Zicfilp / Zicfiss extension (see link) introduces b2 (LPE) in menvcfg CSR to
> enable landing pads and b3 (SSE) in menvcfg CSR to enable shadow stack and
> landing pad for privilege less than M. Additionally extension introduces new
> bits in *status for recording landing pad state and a new exception type
> `software check exception` with cause=0x12.
>
> Link: https://github.com/riscv/riscv-cfi
>
> Signed-off-by: Deepak Gupta <debug at rivosinc.com>
> ---
>  include/sbi/riscv_encoding.h | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
> index 2ed05f2..fa1d373 100644
> --- a/include/sbi/riscv_encoding.h
> +++ b/include/sbi/riscv_encoding.h
> @@ -32,6 +32,7 @@
>  #define MSTATUS_TVM                    _UL(0x00100000)
>  #define MSTATUS_TW                     _UL(0x00200000)
>  #define MSTATUS_TSR                    _UL(0x00400000)
> +#define MSTATUS_SPELP          _UL(0x00800000)
>  #define MSTATUS32_SD                   _UL(0x80000000)
>  #if __riscv_xlen == 64
>  #define MSTATUS_UXL                    _ULL(0x0000000300000000)
> @@ -41,12 +42,14 @@
>  #define MSTATUS_GVA                    _ULL(0x0000004000000000)
>  #define MSTATUS_GVA_SHIFT              38
>  #define MSTATUS_MPV                    _ULL(0x0000008000000000)
> +#define MSTATUS_MPELP          _ULL(0x0000020000000000)
>  #else
>  #define MSTATUSH_SBE                   _UL(0x00000010)
>  #define MSTATUSH_MBE                   _UL(0x00000020)
>  #define MSTATUSH_GVA                   _UL(0x00000040)
>  #define MSTATUSH_GVA_SHIFT             6
>  #define MSTATUSH_MPV                   _UL(0x00000080)
> +#define MSTATUSH_MPELP                 _UL(0x00000200)
>  #endif
>  #define MSTATUS32_SD                   _UL(0x80000000)
>  #define MSTATUS64_SD                   _ULL(0x8000000000000000)
> @@ -220,6 +223,8 @@
>  #define ENVCFG_CBIE_ILL                        _UL(0x0)
>  #define ENVCFG_CBIE_FLUSH              _UL(0x1)
>  #define ENVCFG_CBIE_INV                        _UL(0x3)
> +#define ENVCFG_SSE                     (_UL(1) << 3)
> +#define ENVCFG_LPE                     (_UL(1) << 2)
>  #define ENVCFG_FIOM                    _UL(0x1)
>
>  /* ===== User-level CSRs ===== */
> @@ -228,6 +233,7 @@
>  #define CSR_USTATUS                    0x000
>  #define CSR_UIE                                0x004
>  #define CSR_UTVEC                      0x005
> +#define CSR_SSP                                0x011
>
>  /* User Trap Handling (N-extension) */
>  #define CSR_USCRATCH                   0x040
> @@ -763,6 +769,7 @@
>  #define CAUSE_FETCH_PAGE_FAULT         0xc
>  #define CAUSE_LOAD_PAGE_FAULT          0xd
>  #define CAUSE_STORE_PAGE_FAULT         0xf
> +#define CAUSE_SW_CHECK_EXCP                    0x12
>  #define CAUSE_FETCH_GUEST_PAGE_FAULT   0x14
>  #define CAUSE_LOAD_GUEST_PAGE_FAULT    0x15
>  #define CAUSE_VIRTUAL_INST_FAULT       0x16
> --
> 2.44.0
>

Reviewed-by: Atish Patra <atishp at rivosinc.com>



More information about the opensbi mailing list