11 #include "hpm_soc_feature.h"
30 #if (!defined(PMP_SUPPORT_PMA)) || (defined(PMP_SUPPORT_PMA) && (PMP_SUPPORT_PMA == 1))
51 #define WRITE_DIS (0U)
52 #define EXECUTE_EN (1U)
53 #define EXECUTE_DIS (0U)
54 #define ADDR_MATCH_MODE_OFF (0U)
55 #define ADDR_MATCH_TOR (1U)
56 #define ADDR_MATCH_NAPOT (3U)
58 #define REG_UNLOCK (0U)
63 #define MEM_TYPE_DEV_NON_BUF (0U)
64 #define MEM_TYPE_DEV_BUF (1U)
65 #define MEM_TYPE_MEM_NON_CACHE_NON_BUF (2U)
66 #define MEM_TYPE_MEM_NON_CACHE_BUF (3U)
67 #define MEM_TYPE_MEM_WT_NO_ALLOC (4U)
68 #define MEM_TYPE_MEM_WT_READ_ALLOC (5U)
69 #define MEM_TYPE_MEM_WB_NO_ALLOC (8U)
70 #define MEM_TYPE_MEM_WB_READ_ALLOC (9U)
71 #define MEM_TYPE_MEM_WB_WRITE_ALLOC (10U)
72 #define MEM_TYPE_MEM_WB_READ_WRITE_ALLOC (11U)
73 #define MEM_TYPE_EMPTY_HOLE (15U)
90 #define PMP_CFG(r, w, x, m, l) ((r) | ((w) << 1) | ((x) << 2) | ((m) << 3) | ((l) << 7))
112 #define PMA_CFG(m, t, n) ((m) | ((t) << 2) | ((n) << 6))
116 #define PMP_TOR_ADDR(addr) ((addr) >> 2)
122 #define PMP_NAPOT_ADDR(x, n) (((uint32_t)(x) >> 2) | (((uint32_t)(n)-1U) >> 3))
128 #define PMA_NAPOT_ADDR(x, n) (((uint32_t)(x) >> 2) | ((((uint32_t)(n)-1U) >> 3)))
162 #if (!defined(PMP_SUPPORT_PMA)) || (defined(PMP_SUPPORT_PMA) && (PMP_SUPPORT_PMA == 1))
uint32_t hpm_stat_t
Definition: hpm_common.h:126
void write_pma_cfg(uint32_t value, uint32_t idx)
Write PMA Configuration to corresponding PMA_CFG register.
Definition: hpm_pmp_drv.c:194
uint32_t read_pmp_addr(uint32_t idx)
Read PMP address entry.
Definition: hpm_pmp_drv.c:111
uint32_t read_pma_addr(uint32_t idx)
Read PMA address entry.
Definition: hpm_pmp_drv.c:271
void write_pmp_addr(uint32_t value, uint32_t idx)
Write PMP address to corresponding PMP_ADDR register.
Definition: hpm_pmp_drv.c:54
hpm_stat_t pmp_config_entry(const pmp_entry_t *entry, uint32_t entry_index)
Configure PMP and PMA for specified PMP/PMA entry.
Definition: hpm_pmp_drv.c:331
uint32_t read_pma_cfg(uint32_t idx)
Read PMA configuration.
Definition: hpm_pmp_drv.c:171
uint32_t read_pmp_cfg(uint32_t idx)
Read PMP configuration.
Definition: hpm_pmp_drv.c:10
struct pmp_entry_struct pmp_entry_t
PMP Entry structure.
void pmp_disable(void)
Disable PMP and PMA.
Definition: hpm_pmp_drv.c:393
void write_pmp_cfg(uint32_t value, uint32_t idx)
Write PMP Configuration to corresponding PMP_CFG register.
Definition: hpm_pmp_drv.c:33
void write_pma_addr(uint32_t value, uint32_t idx)
Write PMA address to corresponding PMA_ADDR register.
Definition: hpm_pmp_drv.c:214
hpm_stat_t pmp_config(const pmp_entry_t *entry, uint32_t num_of_entries)
Configure PMP and PMA based on the PMP entry list.
Definition: hpm_pmp_drv.c:361
PMP Entry structure.
Definition: hpm_pmp_drv.h:16
uint8_t execution_ctrl
Definition: hpm_pmp_drv.h:21
union pmp_entry_struct::@177 pmp_cfg
uint32_t pma_addr
Definition: hpm_pmp_drv.h:41
uint8_t addr_matching_mode
Definition: hpm_pmp_drv.h:22
uint32_t pmp_addr
Definition: hpm_pmp_drv.h:29
uint8_t reserved0[3]
Definition: hpm_pmp_drv.h:28
uint8_t entry_addr_matching_mode
Definition: hpm_pmp_drv.h:33
uint8_t lock
Definition: hpm_pmp_drv.h:24
union pmp_entry_struct::@178 pma_cfg
uint8_t read_access_ctrl
Definition: hpm_pmp_drv.h:19
uint8_t write_access_ctrl
Definition: hpm_pmp_drv.h:20
uint8_t reserved1[3]
Definition: hpm_pmp_drv.h:40
uint8_t automic_mem_operation_ctrl
Definition: hpm_pmp_drv.h:35
uint8_t val
Definition: hpm_pmp_drv.h:26
uint8_t reserved
Definition: hpm_pmp_drv.h:23
uint8_t mem_type_attribute
Definition: hpm_pmp_drv.h:34