[PATCH v2 01/13] include: sbi: Add AIA related CSR defines
Anup Patel
anup at brainfault.org
Tue Feb 15 07:14:40 PST 2022
On Wed, Feb 9, 2022 at 8:35 PM Anup Patel <apatel at ventanamicro.com> wrote:
>
> The RISC-V AIA specification improves handling of per-HART local
> interrupts in a backward compatible manner. This patch adds defines
> for the new RISC-V AIA CSRs.
>
> Signed-off-by: Anup Patel <anup.patel at wdc.com>
> Signed-off-by: Anup Patel <apatel at ventanamicro.com>
> Reviewed-by: Atish Patra <atishp at rivosinc.com>
Applied this patch to the riscv/opensbi repo.
Regards,
Anup
> ---
> include/sbi/riscv_encoding.h | 76 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 76 insertions(+)
>
> diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
> index ac8590d..574d1c3 100644
> --- a/include/sbi/riscv_encoding.h
> +++ b/include/sbi/riscv_encoding.h
> @@ -173,6 +173,10 @@
> #define HGATP_MODE_SHIFT HGATP32_MODE_SHIFT
> #endif
>
> +#define TOPI_IID_SHIFT 16
> +#define TOPI_IID_MASK 0xfff
> +#define TOPI_IPRIO_MASK 0xff
> +
> #if __riscv_xlen == 64
> #define MHPMEVENT_OF (_UL(1) << 63)
> #define MHPMEVENT_MINH (_UL(1) << 62)
> @@ -304,6 +308,24 @@
> /* Supervisor Protection and Translation */
> #define CSR_SATP 0x180
>
> +/* Supervisor-Level Window to Indirectly Accessed Registers (AIA) */
> +#define CSR_SISELECT 0x150
> +#define CSR_SIREG 0x151
> +
> +/* Supervisor-Level Interrupts (AIA) */
> +#define CSR_STOPI 0xdb0
> +
> +/* Supervisor-Level IMSIC Interface (AIA) */
> +#define CSR_SSETEIPNUM 0x158
> +#define CSR_SCLREIPNUM 0x159
> +#define CSR_SSETEIENUM 0x15a
> +#define CSR_SCLREIENUM 0x15b
> +#define CSR_STOPEI 0x15c
> +
> +/* Supervisor-Level High-Half CSRs (AIA) */
> +#define CSR_SIEH 0x114
> +#define CSR_SIPH 0x154
> +
> /* ===== Hypervisor-level CSRs ===== */
>
> /* Hypervisor Trap Setup (H-extension) */
> @@ -339,6 +361,35 @@
> #define CSR_VSIP 0x244
> #define CSR_VSATP 0x280
>
> +/* Virtual Interrupts and Interrupt Priorities (H-extension with AIA) */
> +#define CSR_HVIEN 0x608
> +#define CSR_HVICTL 0x609
> +#define CSR_HVIPRIO1 0x646
> +#define CSR_HVIPRIO2 0x647
> +
> +/* VS-Level Window to Indirectly Accessed Registers (H-extension with AIA) */
> +#define CSR_VSISELECT 0x250
> +#define CSR_VSIREG 0x251
> +
> +/* VS-Level Interrupts (H-extension with AIA) */
> +#define CSR_VSTOPI 0xeb0
> +
> +/* VS-Level IMSIC Interface (H-extension with AIA) */
> +#define CSR_VSSETEIPNUM 0x258
> +#define CSR_VSCLREIPNUM 0x259
> +#define CSR_VSSETEIENUM 0x25a
> +#define CSR_VSCLREIENUM 0x25b
> +#define CSR_VSTOPEI 0x25c
> +
> +/* Hypervisor and VS-Level High-Half CSRs (H-extension with AIA) */
> +#define CSR_HIDELEGH 0x613
> +#define CSR_HVIENH 0x618
> +#define CSR_HVIPH 0x655
> +#define CSR_HVIPRIO1H 0x656
> +#define CSR_HVIPRIO2H 0x657
> +#define CSR_VSIEH 0x214
> +#define CSR_VSIPH 0x254
> +
> /* ===== Machine-level CSRs ===== */
>
> /* Machine Information Registers */
> @@ -590,6 +641,31 @@
> #define CSR_DSCRATCH0 0x7b2
> #define CSR_DSCRATCH1 0x7b3
>
> +/* Machine-Level Window to Indirectly Accessed Registers (AIA) */
> +#define CSR_MISELECT 0x350
> +#define CSR_MIREG 0x351
> +
> +/* Machine-Level Interrupts (AIA) */
> +#define CSR_MTOPI 0xfb0
> +
> +/* Machine-Level IMSIC Interface (AIA) */
> +#define CSR_MSETEIPNUM 0x358
> +#define CSR_MCLREIPNUM 0x359
> +#define CSR_MSETEIENUM 0x35a
> +#define CSR_MCLREIENUM 0x35b
> +#define CSR_MTOPEI 0x35c
> +
> +/* Virtual Interrupts for Supervisor Level (AIA) */
> +#define CSR_MVIEN 0x308
> +#define CSR_MVIP 0x309
> +
> +/* Machine-Level High-Half CSRs (AIA) */
> +#define CSR_MIDELEGH 0x313
> +#define CSR_MIEH 0x314
> +#define CSR_MVIENH 0x318
> +#define CSR_MVIPH 0x319
> +#define CSR_MIPH 0x354
> +
> /* ===== Trap/Exception Causes ===== */
>
> #define CAUSE_MISALIGNED_FETCH 0x0
> --
> 2.25.1
>
More information about the opensbi
mailing list