diff options
| author | Radim Krčmář <[email protected]> | 2025-04-29 16:25:49 +0200 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2025-04-30 10:14:26 +0530 |
| commit | 937118ca6520c7d61af5d792917610a234bb6c3a (patch) | |
| tree | 2d6028a0bca56991eb24cd803009596beba70e0c | |
| parent | dac15cb91058f324df909dba4bfcb52f42ff9224 (diff) | |
lib: sbi_hart: add Ssstateen extension
We already detect Smstateen, but Ssstateen exists as well and it doesn't
have the M-state CSRs.
Reviewed-by: Anup Patel <[email protected]>
Signed-off-by: Radim Krčmář <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Anup Patel <[email protected]>
| -rw-r--r-- | include/sbi/sbi_hart.h | 4 | ||||
| -rw-r--r-- | lib/sbi/sbi_hart.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/include/sbi/sbi_hart.h b/include/sbi/sbi_hart.h index c3a7feb7..bce88c59 100644 --- a/include/sbi/sbi_hart.h +++ b/include/sbi/sbi_hart.h @@ -31,7 +31,7 @@ enum sbi_hart_extensions { SBI_HART_EXT_SMAIA = 0, /** HART has Smepmp */ SBI_HART_EXT_SMEPMP, - /** HART has Smstateen CSR **/ + /** HART has Smstateen extension **/ SBI_HART_EXT_SMSTATEEN, /** Hart has Sscofpmt extension */ SBI_HART_EXT_SSCOFPMF, @@ -79,6 +79,8 @@ enum sbi_hart_extensions { SBI_HART_EXT_SMCTR, /** HART has CTR S-mode CSRs */ SBI_HART_EXT_SSCTR, + /** HART has Ssstateen extension **/ + SBI_HART_EXT_SSSTATEEN, /** Maximum index of Hart extension */ SBI_HART_EXT_MAX, diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index c6a77949..8dc61d6f 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -695,6 +695,7 @@ const struct sbi_hart_ext_data sbi_hart_ext[] = { __SBI_HART_EXT_DATA(ssdbltrp, SBI_HART_EXT_SSDBLTRP), __SBI_HART_EXT_DATA(smctr, SBI_HART_EXT_SMCTR), __SBI_HART_EXT_DATA(ssctr, SBI_HART_EXT_SSCTR), + __SBI_HART_EXT_DATA(ssstateen, SBI_HART_EXT_SSSTATEEN), }; _Static_assert(SBI_HART_EXT_MAX == array_size(sbi_hart_ext), @@ -940,6 +941,9 @@ __pmp_skip: /* Detect if hart supports mstateen CSRs */ __check_ext_csr(SBI_HART_PRIV_VER_1_12, CSR_MSTATEEN0, SBI_HART_EXT_SMSTATEEN); + /* Detect if hart supports sstateen CSRs */ + __check_ext_csr(SBI_HART_PRIV_VER_1_12, + CSR_SSTATEEN0, SBI_HART_EXT_SSSTATEEN); /* Detect if hart supports smcntrpmf */ __check_ext_csr(SBI_HART_PRIV_VER_1_12, CSR_MCYCLECFG, SBI_HART_EXT_SMCNTRPMF); |
