mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 15:31:22 +01:00
platform: generic: andes: Add support for RV32 to set up PMA
Like PMP, the behaviors to configure PMA will be different from RV64 and RV32. RV64 uses two Andes custom CSRs, pmacfg0 and pmacfg2, but RV32 uses four Andes custom CSRs, pmacfg0 ~ pmacfg3. This patch adds support to PMA for RV32. Signed-off-by: Ben Zong-You Xie <ben717@andestech.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:

committed by
Anup Patel

parent
f09f16430a
commit
52dcf351cd
@@ -109,10 +109,17 @@ static unsigned long andes_pma_setup(const struct andes_pma_region *pma_region,
|
||||
!(pma_region->flags & ANDES_PMACFG_ETYP_NAPOT))
|
||||
return SBI_EINVAL;
|
||||
|
||||
#if __riscv_xlen == 64
|
||||
pma_cfg_addr = CSR_PMACFG0 + ((entry_id / 8) ? 2 : 0);
|
||||
pmacfg_val = andes_pma_read_num(pma_cfg_addr);
|
||||
pmaxcfg = (char *)&pmacfg_val + (entry_id % 8);
|
||||
*pmaxcfg = 0;
|
||||
#elif __riscv_xlen == 32
|
||||
pma_cfg_addr = CSR_PMACFG0 + (entry_id / 4);
|
||||
pmacfg_val = andes_pma_read_num(pma_cfg_addr);
|
||||
pmaxcfg = (char *)&pmacfg_val + (entry_id % 4);
|
||||
#else
|
||||
#error "Unexpected __riscv_xlen"
|
||||
#endif
|
||||
*pmaxcfg = pma_region->flags;
|
||||
|
||||
andes_pma_write_num(pma_cfg_addr, pmacfg_val);
|
||||
|
Reference in New Issue
Block a user