]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
riscv: Add CSR definitions for pointer masking
authorSamuel Holland <samuel.holland@sifive.com>
Wed, 16 Oct 2024 20:27:44 +0000 (13:27 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 24 Oct 2024 21:12:54 +0000 (14:12 -0700)
Pointer masking is controlled via a two-bit PMM field, which appears in
various CSRs depending on which extensions are implemented. Smmpm adds
the field to mseccfg; Smnpm adds the field to menvcfg; Ssnpm adds the
field to senvcfg. If the H extension is implemented, Ssnpm also defines
henvcfg.PMM and hstatus.HUPMM.

Reviewed-by: Charlie Jenkins <charlie@rivosinc.com>
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Link: https://lore.kernel.org/r/20241016202814.4061541-4-samuel.holland@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/csr.h

index 25966995da04e090ff22a11e35be9bc24712f1a8..fe5d4eb9adea1d4e3065a4d6e2ff361a52aecc44 100644 (file)
 
 /* HSTATUS flags */
 #ifdef CONFIG_64BIT
+#define HSTATUS_HUPMM          _AC(0x3000000000000, UL)
+#define HSTATUS_HUPMM_PMLEN_0  _AC(0x0000000000000, UL)
+#define HSTATUS_HUPMM_PMLEN_7  _AC(0x2000000000000, UL)
+#define HSTATUS_HUPMM_PMLEN_16 _AC(0x3000000000000, UL)
 #define HSTATUS_VSXL           _AC(0x300000000, UL)
 #define HSTATUS_VSXL_SHIFT     32
 #endif
 /* xENVCFG flags */
 #define ENVCFG_STCE                    (_AC(1, ULL) << 63)
 #define ENVCFG_PBMTE                   (_AC(1, ULL) << 62)
+#define ENVCFG_PMM                     (_AC(0x3, ULL) << 32)
+#define ENVCFG_PMM_PMLEN_0             (_AC(0x0, ULL) << 32)
+#define ENVCFG_PMM_PMLEN_7             (_AC(0x2, ULL) << 32)
+#define ENVCFG_PMM_PMLEN_16            (_AC(0x3, ULL) << 32)
 #define ENVCFG_CBZE                    (_AC(1, UL) << 7)
 #define ENVCFG_CBCFE                   (_AC(1, UL) << 6)
 #define ENVCFG_CBIE_SHIFT              4
 #define SMSTATEEN0_SSTATEEN0_SHIFT     63
 #define SMSTATEEN0_SSTATEEN0           (_ULL(1) << SMSTATEEN0_SSTATEEN0_SHIFT)
 
+/* mseccfg bits */
+#define MSECCFG_PMM                    ENVCFG_PMM
+#define MSECCFG_PMM_PMLEN_0            ENVCFG_PMM_PMLEN_0
+#define MSECCFG_PMM_PMLEN_7            ENVCFG_PMM_PMLEN_7
+#define MSECCFG_PMM_PMLEN_16           ENVCFG_PMM_PMLEN_16
+
 /* symbolic CSR names: */
 #define CSR_CYCLE              0xc00
 #define CSR_TIME               0xc01
 #define CSR_MIP                        0x344
 #define CSR_PMPCFG0            0x3a0
 #define CSR_PMPADDR0           0x3b0
+#define CSR_MSECCFG            0x747
+#define CSR_MSECCFGH           0x757
 #define CSR_MVENDORID          0xf11
 #define CSR_MARCHID            0xf12
 #define CSR_MIMPID             0xf13