mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
Add epmp to extensions list and rename it to smepmp
Smepmp is a ratified extension which qemu refers to as epmp. Rename epmp to smepmp and add it to extension list so that it is added to the isa string. Signed-off-by: Himanshu Chauhan <hchauhan@ventanamicro.com> Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20231019065546.1431579-1-mchitale@ventanamicro.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
a3abecbef0
commit
095fe72a12
5 changed files with 15 additions and 17 deletions
|
@ -91,7 +91,7 @@ static bool pmp_write_cfg(CPURISCVState *env, uint32_t pmp_index, uint8_t val)
|
|||
if (pmp_index < MAX_RISCV_PMPS) {
|
||||
bool locked = true;
|
||||
|
||||
if (riscv_cpu_cfg(env)->epmp) {
|
||||
if (riscv_cpu_cfg(env)->ext_smepmp) {
|
||||
/* mseccfg.RLB is set */
|
||||
if (MSECCFG_RLB_ISSET(env)) {
|
||||
locked = false;
|
||||
|
@ -340,9 +340,9 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr,
|
|||
|
||||
/*
|
||||
* Convert the PMP permissions to match the truth table in the
|
||||
* ePMP spec.
|
||||
* Smepmp spec.
|
||||
*/
|
||||
const uint8_t epmp_operation =
|
||||
const uint8_t smepmp_operation =
|
||||
((env->pmp_state.pmp[i].cfg_reg & PMP_LOCK) >> 4) |
|
||||
((env->pmp_state.pmp[i].cfg_reg & PMP_READ) << 2) |
|
||||
(env->pmp_state.pmp[i].cfg_reg & PMP_WRITE) |
|
||||
|
@ -367,7 +367,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr,
|
|||
* If mseccfg.MML Bit set, do the enhanced pmp priv check
|
||||
*/
|
||||
if (mode == PRV_M) {
|
||||
switch (epmp_operation) {
|
||||
switch (smepmp_operation) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 4:
|
||||
|
@ -398,7 +398,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, target_ulong addr,
|
|||
g_assert_not_reached();
|
||||
}
|
||||
} else {
|
||||
switch (epmp_operation) {
|
||||
switch (smepmp_operation) {
|
||||
case 0:
|
||||
case 8:
|
||||
case 9:
|
||||
|
@ -574,7 +574,7 @@ void mseccfg_csr_write(CPURISCVState *env, target_ulong val)
|
|||
}
|
||||
}
|
||||
|
||||
if (riscv_cpu_cfg(env)->epmp) {
|
||||
if (riscv_cpu_cfg(env)->ext_smepmp) {
|
||||
/* Sticky bits */
|
||||
val |= (env->mseccfg & (MSECCFG_MMWP | MSECCFG_MML));
|
||||
if ((val ^ env->mseccfg) & (MSECCFG_MMWP | MSECCFG_MML)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue