CSR 位字段

RISC-V pmpcfg12 CSR 寄存器详解

地址 0x3AC特权级 Machine 模式访问 读写 / MXLEN:RV32 32 位;RV64 64 位Machine 物理内存保护 CSR

pmpcfg12(0x3AC)是 Machine PMP 配置 CSR;RV32 打包 pmp48cfg-pmp51cfg,RV64 打包 pmp48cfg-pmp55cfg。

位作用速览
bit 3 = 只有第 3 位;bits 12..11 = 第 12 到第 11 位
高位 MSB低位 LSB
字段映射

按 bit 字段理解 pmpcfg12

48 个关键字段
7

pmp48cfg.L

WARL/可为只读零

PMP 条目 48 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 48 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp48cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
6:5

pmp48cfg.reserved

WARL/可为只读零

pmp48cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp48cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
4:3

pmp48cfg.A

WARL/可为只读零

PMP 条目 48 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 48 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp48cfg.A
0OFF

PMP entry 48 关闭,匹配空区域。

1TOR

PMP entry 48 使用 top-of-range 匹配;上界来自 pmpaddr48,下界来自 pmpaddr47。

2NA4

PMP entry 48 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 48 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr48 的低位编码。

打开官方手册
2

pmp48cfg.X

整体 WARL(R/W/X)

PMP entry 48 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 48 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp48cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
1

pmp48cfg.W

整体 WARL(R/W/X)

PMP entry 48 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 48 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp48cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
0

pmp48cfg.R

整体 WARL(R/W/X)

PMP entry 48 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 48 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp48cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
15

pmp49cfg.L

WARL/可为只读零

PMP 条目 49 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 49 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp49cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
14:13

pmp49cfg.reserved

WARL/可为只读零

pmp49cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp49cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
12:11

pmp49cfg.A

WARL/可为只读零

PMP 条目 49 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 49 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp49cfg.A
0OFF

PMP entry 49 关闭,匹配空区域。

1TOR

PMP entry 49 使用 top-of-range 匹配;上界来自 pmpaddr49,下界来自 pmpaddr48。

2NA4

PMP entry 49 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 49 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr49 的低位编码。

打开官方手册
10

pmp49cfg.X

整体 WARL(R/W/X)

PMP entry 49 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 49 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp49cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
9

pmp49cfg.W

整体 WARL(R/W/X)

PMP entry 49 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 49 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp49cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
8

pmp49cfg.R

整体 WARL(R/W/X)

PMP entry 49 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 49 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp49cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
23

pmp50cfg.L

WARL/可为只读零

PMP 条目 50 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 50 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp50cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
22:21

pmp50cfg.reserved

WARL/可为只读零

pmp50cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp50cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
20:19

pmp50cfg.A

WARL/可为只读零

PMP 条目 50 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 50 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp50cfg.A
0OFF

PMP entry 50 关闭,匹配空区域。

1TOR

PMP entry 50 使用 top-of-range 匹配;上界来自 pmpaddr50,下界来自 pmpaddr49。

2NA4

PMP entry 50 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 50 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr50 的低位编码。

打开官方手册
18

pmp50cfg.X

整体 WARL(R/W/X)

PMP entry 50 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 50 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp50cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
17

pmp50cfg.W

整体 WARL(R/W/X)

PMP entry 50 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 50 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp50cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
16

pmp50cfg.R

整体 WARL(R/W/X)

PMP entry 50 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 50 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp50cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
31

pmp51cfg.L

WARL/可为只读零

PMP 条目 51 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 51 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp51cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
30:29

pmp51cfg.reserved

WARL/可为只读零

pmp51cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp51cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
28:27

pmp51cfg.A

WARL/可为只读零

PMP 条目 51 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 51 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp51cfg.A
0OFF

PMP entry 51 关闭,匹配空区域。

1TOR

PMP entry 51 使用 top-of-range 匹配;上界来自 pmpaddr51,下界来自 pmpaddr50。

2NA4

PMP entry 51 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 51 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr51 的低位编码。

打开官方手册
26

pmp51cfg.X

整体 WARL(R/W/X)

PMP entry 51 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 51 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp51cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
25

pmp51cfg.W

整体 WARL(R/W/X)

PMP entry 51 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 51 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp51cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
24

pmp51cfg.R

整体 WARL(R/W/X)

PMP entry 51 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 51 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp51cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
39

pmp52cfg.L

WARL/可为只读零

PMP 条目 52 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 52 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp52cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
38:37

pmp52cfg.reserved

WARL/可为只读零

pmp52cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp52cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
36:35

pmp52cfg.A

WARL/可为只读零

PMP 条目 52 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 52 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp52cfg.A
0OFF

PMP entry 52 关闭,匹配空区域。

1TOR

PMP entry 52 使用 top-of-range 匹配;上界来自 pmpaddr52,下界来自 pmpaddr51。

2NA4

PMP entry 52 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 52 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr52 的低位编码。

打开官方手册
34

pmp52cfg.X

整体 WARL(R/W/X)

PMP entry 52 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 52 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp52cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
33

pmp52cfg.W

整体 WARL(R/W/X)

PMP entry 52 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 52 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp52cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
32

pmp52cfg.R

整体 WARL(R/W/X)

PMP entry 52 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 52 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp52cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
47

pmp53cfg.L

WARL/可为只读零

PMP 条目 53 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 53 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp53cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
46:45

pmp53cfg.reserved

WARL/可为只读零

pmp53cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp53cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
44:43

pmp53cfg.A

WARL/可为只读零

PMP 条目 53 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 53 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp53cfg.A
0OFF

PMP entry 53 关闭,匹配空区域。

1TOR

PMP entry 53 使用 top-of-range 匹配;上界来自 pmpaddr53,下界来自 pmpaddr52。

2NA4

PMP entry 53 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 53 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr53 的低位编码。

打开官方手册
42

pmp53cfg.X

整体 WARL(R/W/X)

PMP entry 53 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 53 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp53cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
41

pmp53cfg.W

整体 WARL(R/W/X)

PMP entry 53 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 53 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp53cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
40

pmp53cfg.R

整体 WARL(R/W/X)

PMP entry 53 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 53 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp53cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
55

pmp54cfg.L

WARL/可为只读零

PMP 条目 54 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 54 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp54cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
54:53

pmp54cfg.reserved

WARL/可为只读零

pmp54cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp54cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
52:51

pmp54cfg.A

WARL/可为只读零

PMP 条目 54 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 54 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp54cfg.A
0OFF

PMP entry 54 关闭,匹配空区域。

1TOR

PMP entry 54 使用 top-of-range 匹配;上界来自 pmpaddr54,下界来自 pmpaddr53。

2NA4

PMP entry 54 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 54 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr54 的低位编码。

打开官方手册
50

pmp54cfg.X

整体 WARL(R/W/X)

PMP entry 54 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 54 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp54cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
49

pmp54cfg.W

整体 WARL(R/W/X)

PMP entry 54 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 54 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp54cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
48

pmp54cfg.R

整体 WARL(R/W/X)

PMP entry 54 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 54 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp54cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
63

pmp55cfg.L

WARL/可为只读零

PMP 条目 55 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

这个字段控制什么

  • - PMP 条目 55 的锁定位。该字段为 WARL,并可实现为只读零;Smepmp 的 RLB/MML 会改变锁定或权限解释。

常见取值

pmp55cfg.L
0L=0

基础 PMP 中该 entry 未锁定;M-mode 命中访问绕过 R/W/X,但 pmpaddrN 仍可能被后一条 locked TOR entry 锁定。Smepmp 的 MML 规则可改变权限解释。

1L=1

基础 PMP 中锁定该 entry:写 pmpNcfg/pmpaddrN 被忽略直到 hart reset,TOR 还锁定前一 pmpaddr,且 R/W/X 对所有特权模式生效。Smepmp 的 RLB/MML 规则可改变此解释。

打开官方手册
62:61

pmp55cfg.reserved

WARL/可为只读零

pmp55cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

这个字段控制什么

  • - pmp55cfg 的位 6:5 在标准 PMP 布局中为保留零;作为 PMP CSR 字段,它们为 WARL 并可实现为只读零。

常见取值

这个字段更适合结合上下文字段解释,不用按固定枚举背诵。

打开官方手册
60:59

pmp55cfg.A

WARL/可为只读零

PMP 条目 55 的地址匹配模式。该字段为 WARL,并可实现为只读零。

这个字段控制什么

  • - PMP 条目 55 的地址匹配模式。该字段为 WARL,并可实现为只读零。

常见取值

pmp55cfg.A
0OFF

PMP entry 55 关闭,匹配空区域。

1TOR

PMP entry 55 使用 top-of-range 匹配;上界来自 pmpaddr55,下界来自 pmpaddr54。

2NA4

PMP entry 55 匹配自然对齐的 4 字节区域;若平台 PMP grain 不支持 NA4,该编码不可选择。

3NAPOT

PMP entry 55 匹配自然对齐的 2 的幂大小区域,大小至少 8 字节,范围大小由 pmpaddr55 的低位编码。

打开官方手册
58

pmp55cfg.X

整体 WARL(R/W/X)

PMP entry 55 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 55 的 X 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp55cfg.X
0X=0

mseccfg.MML=0 时,不授予执行权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1X=1

mseccfg.MML=0 时,允许匹配 entry 的取指;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
57

pmp55cfg.W

整体 WARL(R/W/X)

PMP entry 55 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 55 的 W 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp55cfg.W
0W=0

mseccfg.MML=0 时,不授予写权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1W=1

mseccfg.MML=0 时,在 R=1 时允许匹配 entry 的写访问;R=0、W=1 在基础 PMP 中保留;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
56

pmp55cfg.R

整体 WARL(R/W/X)

PMP entry 55 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

这个字段控制什么

  • - PMP entry 55 的 R 位;R/W/X 构成整体 WARL 字段。以下单个位值说明适用于基础 PMP(mseccfg.MML=0);MML=1 时按 Smepmp 的 L/R/W/X 整体编码解释。

常见取值

pmp55cfg.R
0R=0

mseccfg.MML=0 时,不授予读权限;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

1R=1

mseccfg.MML=0 时,允许匹配 entry 的读访问;M-mode 仅在 L=1 时受该权限约束。MML=1 时不能单独解释此位。

打开官方手册
官方依据与检索要点

pmpcfg12 在 RV32 打包四个、在 RV64 打包八个 8 位 PMP 配置;每项由 L、A、X、W、R 与两个保留零位组成。

Machine ISA 的 Physical Memory Protection CSRs 小节定义地址、MXLEN packing、M-mode-only 访问与 WARL/RO0 行为。
A 编码为 OFF、TOR、NA4、NAPOT;平台 grain 可使 NA4 不可选。
基础 PMP 与 Smepmp MML=1 对 L/R/W/X 的解释不同,页面字段值必须结合 mseccfg 判断。

读这个 CSR 时先看什么

  • - pmpcfg12 在 RV32 包含 entries 48-51,在 RV64 的同一 CSR 中包含 entries 48-55。
  • - PMP 是可选机制;实现可提供 0、16 或 64 个 entries,所有 PMP CSR 字段都是 WARL 并可为只读零。
  • - PMP CSR 仅能由 M 模式访问。
  • - 本页所说的 M-mode 权限绕过仅适用于有效特权级为 M 的访问;mstatus.MPRV 可使 M-mode 数据访问以 S/U 有效特权级接受 PMP 检查。
  • - 复位时,可写 PMP 寄存器的 A 和 L 字段置 0,除非平台为某些 PMP 寄存器规定不同值;其他 PMP 字段的复位值未规定,但 WARL 字段不会包含非法值。

写入前的风险检查

  • - R/W/X 是一个整体 WARL 字段;在基础 PMP(mseccfg.MML=0)中 R=0、W=1 的组合保留,而 Smepmp 在 MML=1 时会整体重新解释 L/R/W/X。
  • - L=1 会锁定 pmpNcfg 和 pmpaddrN 直到 hart reset;若 A=TOR,还会锁定前一 pmpaddr。Smepmp 的 mseccfg.RLB 可绕过锁定规则。
  • - 写 WARL 字段后应读回实际采用的值;不要假定未实现的权限或匹配模式会被接受。

放回真实流程里理解

1

根据 OFF、TOR、NA4 或 NAPOT 选择 A,并在对应 pmpaddrN(TOR 时还包括前一地址寄存器)中编码范围。

2

根据当前 mseccfg.MML 状态解释并写入 L/R/W/X 的整体 WARL 编码。

3

读回 pmpcfg 与 pmpaddr,确认实现采用的 WARL 值;仅在配置最终确定后设置 L。

常见问题

pmpcfg12 在 RV32 与 RV64 中包含相同数量的 entries 吗?

不相同。RV32 的 pmpcfg12 打包 pmp48cfg-pmp51cfg;RV64 的 pmpcfg12 打包 pmp48cfg-pmp55cfg。