Skip to content

Commit 941f76e

Browse files
spacemonkeydeliversalistair23
authored andcommitted
target/riscv: Support Supm and Sspm as part of Zjpm v1.0
The Zjpm v1.0 spec states there should be Supm and Sspm extensions that are used in profile specification. Enabling Supm extension enables both Ssnpm and Smnpm, while Sspm enables only Smnpm. Signed-off-by: Alexey Baturo <baturo.alexey@gmail.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20250113194410.1307494-1-baturo.alexey@gmail.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
1 parent fa62285 commit 941f76e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

target/riscv/cpu.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,12 @@ const RISCVIsaExtData isa_edata_arr[] = {
208208
ISA_EXT_DATA_ENTRY(sscsrind, PRIV_VERSION_1_12_0, ext_sscsrind),
209209
ISA_EXT_DATA_ENTRY(ssdbltrp, PRIV_VERSION_1_13_0, ext_ssdbltrp),
210210
ISA_EXT_DATA_ENTRY(ssnpm, PRIV_VERSION_1_13_0, ext_ssnpm),
211+
ISA_EXT_DATA_ENTRY(sspm, PRIV_VERSION_1_13_0, ext_sspm),
211212
ISA_EXT_DATA_ENTRY(ssstateen, PRIV_VERSION_1_12_0, ext_ssstateen),
212213
ISA_EXT_DATA_ENTRY(sstc, PRIV_VERSION_1_12_0, ext_sstc),
213214
ISA_EXT_DATA_ENTRY(sstvala, PRIV_VERSION_1_12_0, has_priv_1_12),
214215
ISA_EXT_DATA_ENTRY(sstvecd, PRIV_VERSION_1_12_0, has_priv_1_12),
216+
ISA_EXT_DATA_ENTRY(supm, PRIV_VERSION_1_13_0, ext_supm),
215217
ISA_EXT_DATA_ENTRY(svade, PRIV_VERSION_1_11_0, ext_svade),
216218
ISA_EXT_DATA_ENTRY(svadu, PRIV_VERSION_1_12_0, ext_svadu),
217219
ISA_EXT_DATA_ENTRY(svinval, PRIV_VERSION_1_12_0, ext_svinval),
@@ -1625,6 +1627,8 @@ const RISCVCPUMultiExtConfig riscv_cpu_extensions[] = {
16251627
MULTI_EXT_CFG_BOOL("zvfhmin", ext_zvfhmin, false),
16261628
MULTI_EXT_CFG_BOOL("sstc", ext_sstc, true),
16271629
MULTI_EXT_CFG_BOOL("ssnpm", ext_ssnpm, false),
1630+
MULTI_EXT_CFG_BOOL("sspm", ext_sspm, false),
1631+
MULTI_EXT_CFG_BOOL("supm", ext_supm, false),
16281632

16291633
MULTI_EXT_CFG_BOOL("smaia", ext_smaia, false),
16301634
MULTI_EXT_CFG_BOOL("smdbltrp", ext_smdbltrp, false),
@@ -2781,6 +2785,24 @@ static RISCVCPUImpliedExtsRule SSCFG_IMPLIED = {
27812785
},
27822786
};
27832787

2788+
static RISCVCPUImpliedExtsRule SUPM_IMPLIED = {
2789+
.ext = CPU_CFG_OFFSET(ext_supm),
2790+
.implied_multi_exts = {
2791+
CPU_CFG_OFFSET(ext_ssnpm), CPU_CFG_OFFSET(ext_smnpm),
2792+
2793+
RISCV_IMPLIED_EXTS_RULE_END
2794+
},
2795+
};
2796+
2797+
static RISCVCPUImpliedExtsRule SSPM_IMPLIED = {
2798+
.ext = CPU_CFG_OFFSET(ext_sspm),
2799+
.implied_multi_exts = {
2800+
CPU_CFG_OFFSET(ext_smnpm),
2801+
2802+
RISCV_IMPLIED_EXTS_RULE_END
2803+
},
2804+
};
2805+
27842806
RISCVCPUImpliedExtsRule *riscv_misa_ext_implied_rules[] = {
27852807
&RVA_IMPLIED, &RVD_IMPLIED, &RVF_IMPLIED,
27862808
&RVM_IMPLIED, &RVV_IMPLIED, NULL
@@ -2799,6 +2821,7 @@ RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rules[] = {
27992821
&ZVFH_IMPLIED, &ZVFHMIN_IMPLIED, &ZVKN_IMPLIED,
28002822
&ZVKNC_IMPLIED, &ZVKNG_IMPLIED, &ZVKNHB_IMPLIED,
28012823
&ZVKS_IMPLIED, &ZVKSC_IMPLIED, &ZVKSG_IMPLIED, &SSCFG_IMPLIED,
2824+
&SUPM_IMPLIED, &SSPM_IMPLIED,
28022825
NULL
28032826
};
28042827

target/riscv/cpu_cfg.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ struct RISCVCPUConfig {
139139
bool ext_ssnpm;
140140
bool ext_smnpm;
141141
bool ext_smmpm;
142+
bool ext_sspm;
143+
bool ext_supm;
142144
bool rvv_ta_all_1s;
143145
bool rvv_ma_all_1s;
144146
bool rvv_vl_half_avl;

0 commit comments

Comments
 (0)