RISC-V PMP configuration options. More...
RISC-V PMP configuration options.
RISCV implementations using this peripheral must define the NUM_PMP_ENTRIES NUM_PMP_ENTRIES must be 16 or 64.
Definition in file pmp.h.
 Include dependency graph for pmp.h:Go to the source code of this file.
Functions | |
| static uint32_t | make_napot (uint32_t addr, uint32_t size) | 
| Create a NAPOT formatted address.  More... | |
| void | write_pmpcfg (uint8_t reg_num, uint32_t value) | 
| Writes a complete pmpcfg register.  More... | |
| uint32_t | read_pmpcfg (uint8_t reg_num) | 
| Read a complete pmpcfg register.  More... | |
| void | write_pmpaddr (uint8_t reg_num, uint32_t value) | 
| Writes a complete pmpaddr register.  More... | |
| uint32_t | read_pmpaddr (uint8_t reg_num) | 
| Read a complete pmpaddr register.  More... | |
| uint8_t | get_pmpcfg (uint8_t entry) | 
| Read a single pmpcfg sub-register.  More... | |
| void | set_pmpcfg (uint8_t entry, uint8_t value) | 
| Set's a single pmpcfg sub-register.  More... | |
| void | print_pmpcfg (uint8_t entry) | 
| Prints a single pmpcfg sub-register human readable.  More... | |
Bit masks for the PMP configuration register | |
| #define | PMP_NONE 0x00 | 
| No access allowed at all.  | |
| #define | PMP_R 0x01 | 
| Allow read access.  | |
| #define | PMP_W 0x02 | 
| Allow write access.  | |
| #define | PMP_X 0x04 | 
| Allow execution.  | |
| #define | PMP_A 0x18 | 
| Addressing mode mask.  | |
| #define | PMP_OFF 0x00 | 
| Disable this pmp entry.  | |
| #define | PMP_TOR 0x08 | 
| Top-of-range addressing mode.  | |
| #define | PMP_NA4 0x10 | 
| Naturally aligned four-byte region.  | |
| #define | PMP_NAPOT 0x18 | 
| Naturally aligned power-of-two region, ≥8 bytes.  | |
| #define | PMP_L 0x80 | 
| Lock; read-only config & applies to machine-mode.  | |
| uint8_t get_pmpcfg | ( | uint8_t | entry | ) | 
Read a single pmpcfg sub-register.
| [in] | entry | Sub-register number | 
      
  | 
  inlinestatic | 
| void print_pmpcfg | ( | uint8_t | entry | ) | 
Prints a single pmpcfg sub-register human readable.
| entry | Register number to print | 
| uint32_t read_pmpaddr | ( | uint8_t | reg_num | ) | 
Read a complete pmpaddr register.
| [in] | reg_num | Register number | 
| uint32_t read_pmpcfg | ( | uint8_t | reg_num | ) | 
Read a complete pmpcfg register.
| [in] | reg_num | Register number | 
| void set_pmpcfg | ( | uint8_t | entry, | 
| uint8_t | value | ||
| ) | 
Set's a single pmpcfg sub-register.
| entry | Sub-register number | 
| value | Value to write | 
| void write_pmpaddr | ( | uint8_t | reg_num, | 
| uint32_t | value | ||
| ) | 
Writes a complete pmpaddr register.
| reg_num | Register number | 
| value | Value to write | 
| void write_pmpcfg | ( | uint8_t | reg_num, | 
| uint32_t | value | ||
| ) | 
Writes a complete pmpcfg register.
| reg_num | Register number | 
| value | Value to write |