[sync] sync code from internal

This commit is contained in:
jzlv 2023-02-24 21:33:12 +08:00
parent e70e482d21
commit dd161b698b
302 changed files with 36006 additions and 27903 deletions

View file

@ -274,6 +274,8 @@ pmp_status_type_e rvpmp_fill_entry(const pmp_config_entry_t *entry, uintptr_t i,
am = entry->entry_flag & ENTRY_FLAG_ADDR_MASK;
switch (am) {
case ENTRY_FLAG_ADDR_OFF:
break;
case ENTRY_FLAG_ADDR_TOR:
pa >>= 2;
break;

View file

@ -3,7 +3,7 @@
#include "stdint.h"
#define RV_PMP_ENTRY (8)
#define RV_PMP_ENTRY (8)
#define ENTRY_FLAG_PERM_R (1 << 0)
#define ENTRY_FLAG_PERM_W (1 << 1)
@ -14,38 +14,38 @@
#define ENTRY_FLAG_ADDR_MASK (3 << 3)
#define ENTRY_FLAG_M_MODE_L (1 << 7)
#define ENTRY_FLAG_SIZE (8)
#define ENTRY_FLAG_MASK (0xFF)
#define ENTRY_FLAG_SIZE (8)
#define ENTRY_FLAG_MASK (0xFF)
#define ENTRY_IN_CFG_REG (__riscv_xlen / ENTRY_FLAG_SIZE)
#define ENTRY_IN_CFG_REG (__riscv_xlen / ENTRY_FLAG_SIZE)
/* E907: the smallest granularity is 128B */
/* C906: the smallest granularity is 4K */
#define PMP_REG_SZ_128B (1 << 8)
#define PMP_REG_SZ_256B (1 << 9)
#define PMP_REG_SZ_512B (1 << 10)
#define PMP_REG_SZ_1K (1 << 11)
#define PMP_REG_SZ_2K (1 << 12)
#define PMP_REG_SZ_4K (1 << 12)
#define PMP_REG_SZ_8K (1 << 13)
#define PMP_REG_SZ_16K (1 << 14)
#define PMP_REG_SZ_32K (1 << 15)
#define PMP_REG_SZ_64K (1 << 16)
#define PMP_REG_SZ_128K (1 << 17)
#define PMP_REG_SZ_256K (1 << 18)
#define PMP_REG_SZ_512K (1 << 19)
#define PMP_REG_SZ_1M (1 << 20)
#define PMP_REG_SZ_2M (1 << 21)
#define PMP_REG_SZ_4M (1 << 22)
#define PMP_REG_SZ_8M (1 << 23)
#define PMP_REG_SZ_16M (1 << 24)
#define PMP_REG_SZ_32M (1 << 25)
#define PMP_REG_SZ_64M (1 << 26)
#define PMP_REG_SZ_128M (1 << 27)
#define PMP_REG_SZ_256M (1 << 28)
#define PMP_REG_SZ_512M (1 << 29)
#define PMP_REG_SZ_1G (1 << 30)
#define PMP_REG_SZ_1024M (PMP_REG_SZ_1G)
#define PMP_REG_SZ_128B (1 << 7)
#define PMP_REG_SZ_256B (1 << 8)
#define PMP_REG_SZ_512B (1 << 9)
#define PMP_REG_SZ_1K (1 << 10)
#define PMP_REG_SZ_2K (1 << 11)
#define PMP_REG_SZ_4K (1 << 12)
#define PMP_REG_SZ_8K (1 << 13)
#define PMP_REG_SZ_16K (1 << 14)
#define PMP_REG_SZ_32K (1 << 15)
#define PMP_REG_SZ_64K (1 << 16)
#define PMP_REG_SZ_128K (1 << 17)
#define PMP_REG_SZ_256K (1 << 18)
#define PMP_REG_SZ_512K (1 << 19)
#define PMP_REG_SZ_1M (1 << 20)
#define PMP_REG_SZ_2M (1 << 21)
#define PMP_REG_SZ_4M (1 << 22)
#define PMP_REG_SZ_8M (1 << 23)
#define PMP_REG_SZ_16M (1 << 24)
#define PMP_REG_SZ_32M (1 << 25)
#define PMP_REG_SZ_64M (1 << 26)
#define PMP_REG_SZ_128M (1 << 27)
#define PMP_REG_SZ_256M (1 << 28)
#define PMP_REG_SZ_512M (1 << 29)
#define PMP_REG_SZ_1G (1 << 30)
#define PMP_REG_SZ_1024M (PMP_REG_SZ_1G)
typedef enum _pmp_status_type_ {
PMP_STATUS_OK = 0,