target/riscv: remove RISCV_FEATURE_EPMP
RISCV_FEATURE_EPMP is always set to the same value as the cpu->cfg.epmp flag. Use the flag directly. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn> Reviewed-by: Bin Meng <bmeng@tinylab.org> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com> Message-ID: <20230222185205.355361-7-dbarboza@ventanamicro.com> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
parent
09631441e5
commit
6a3ffda2ba
|
@ -927,17 +927,13 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp)
|
||||||
riscv_set_feature(env, RISCV_FEATURE_PMP);
|
riscv_set_feature(env, RISCV_FEATURE_PMP);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpu->cfg.epmp) {
|
if (cpu->cfg.epmp && !cpu->cfg.pmp) {
|
||||||
riscv_set_feature(env, RISCV_FEATURE_EPMP);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enhanced PMP should only be available
|
* Enhanced PMP should only be available
|
||||||
* on harts with PMP support
|
* on harts with PMP support
|
||||||
*/
|
*/
|
||||||
if (!cpu->cfg.pmp) {
|
error_setg(errp, "Invalid configuration: EPMP requires PMP support");
|
||||||
error_setg(errp, "Invalid configuration: EPMP requires PMP support");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,6 @@
|
||||||
enum {
|
enum {
|
||||||
RISCV_FEATURE_MMU,
|
RISCV_FEATURE_MMU,
|
||||||
RISCV_FEATURE_PMP,
|
RISCV_FEATURE_PMP,
|
||||||
RISCV_FEATURE_EPMP,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Privileged specification version */
|
/* Privileged specification version */
|
||||||
|
|
|
@ -428,7 +428,7 @@ static RISCVException pmp(CPURISCVState *env, int csrno)
|
||||||
|
|
||||||
static RISCVException epmp(CPURISCVState *env, int csrno)
|
static RISCVException epmp(CPURISCVState *env, int csrno)
|
||||||
{
|
{
|
||||||
if (env->priv == PRV_M && riscv_feature(env, RISCV_FEATURE_EPMP)) {
|
if (env->priv == PRV_M && riscv_cpu_cfg(env)->epmp) {
|
||||||
return RISCV_EXCP_NONE;
|
return RISCV_EXCP_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ static void pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t val)
|
||||||
if (pmp_index < MAX_RISCV_PMPS) {
|
if (pmp_index < MAX_RISCV_PMPS) {
|
||||||
bool locked = true;
|
bool locked = true;
|
||||||
|
|
||||||
if (riscv_feature(env, RISCV_FEATURE_EPMP)) {
|
if (riscv_cpu_cfg(env)->epmp) {
|
||||||
/* mseccfg.RLB is set */
|
/* mseccfg.RLB is set */
|
||||||
if (MSECCFG_RLB_ISSET(env)) {
|
if (MSECCFG_RLB_ISSET(env)) {
|
||||||
locked = false;
|
locked = false;
|
||||||
|
@ -239,7 +239,7 @@ static bool pmp_hart_has_privs_default(CPURISCVState *env, target_ulong addr,
|
||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
if (riscv_feature(env, RISCV_FEATURE_EPMP)) {
|
if (riscv_cpu_cfg(env)->epmp) {
|
||||||
if (MSECCFG_MMWP_ISSET(env)) {
|
if (MSECCFG_MMWP_ISSET(env)) {
|
||||||
/*
|
/*
|
||||||
* The Machine Mode Whitelist Policy (mseccfg.MMWP) is set
|
* The Machine Mode Whitelist Policy (mseccfg.MMWP) is set
|
||||||
|
|
Loading…
Reference in New Issue