CSR 位字段

RISC-V pmpcfg6 CSR 寄存器详解

地址 0x3A6特权级 Machine 模式访问 Machine 读写(字段均为 WARL/可为只读零) / MXLEN:RV32 32 位;RV64 64 位Machine 物理内存保护 CSR

pmpcfg6(0x3A6)是 Machine PMP 配置 CSR;RV32 打包 pmp24cfg-pmp27cfg,RV64 打包 pmp24cfg-pmp31cfg。

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

按 bit 字段理解 pmpcfg6

48 个关键字段
7

pmp24cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp24cfg.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

pmp24cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
4:3

pmp24cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp24cfg.A
0OFF

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

1TOR

PMP entry 24 使用 top-of-range 匹配;上界来自 pmpaddr24,下界来自 pmpaddr23。

2NA4

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

3NAPOT

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

打开官方手册
2

pmp24cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp24cfg.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

pmp24cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp24cfg.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

pmp24cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp24cfg.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

pmp25cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp25cfg.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

pmp25cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
12:11

pmp25cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp25cfg.A
0OFF

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

1TOR

PMP entry 25 使用 top-of-range 匹配;上界来自 pmpaddr25,下界来自 pmpaddr24。

2NA4

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

3NAPOT

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

打开官方手册
10

pmp25cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp25cfg.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

pmp25cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp25cfg.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

pmp25cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp25cfg.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

pmp26cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp26cfg.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

pmp26cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
20:19

pmp26cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp26cfg.A
0OFF

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

1TOR

PMP entry 26 使用 top-of-range 匹配;上界来自 pmpaddr26,下界来自 pmpaddr25。

2NA4

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

3NAPOT

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

打开官方手册
18

pmp26cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp26cfg.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

pmp26cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp26cfg.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

pmp26cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp26cfg.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

pmp27cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp27cfg.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

pmp27cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
28:27

pmp27cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp27cfg.A
0OFF

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

1TOR

PMP entry 27 使用 top-of-range 匹配;上界来自 pmpaddr27,下界来自 pmpaddr26。

2NA4

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

3NAPOT

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

打开官方手册
26

pmp27cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp27cfg.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

pmp27cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp27cfg.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

pmp27cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp27cfg.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

pmp28cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp28cfg.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

pmp28cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
36:35

pmp28cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp28cfg.A
0OFF

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

1TOR

PMP entry 28 使用 top-of-range 匹配;上界来自 pmpaddr28,下界来自 pmpaddr27。

2NA4

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

3NAPOT

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

打开官方手册
34

pmp28cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp28cfg.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

pmp28cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp28cfg.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

pmp28cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp28cfg.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

pmp29cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp29cfg.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

pmp29cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
44:43

pmp29cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp29cfg.A
0OFF

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

1TOR

PMP entry 29 使用 top-of-range 匹配;上界来自 pmpaddr29,下界来自 pmpaddr28。

2NA4

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

3NAPOT

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

打开官方手册
42

pmp29cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp29cfg.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

pmp29cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp29cfg.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

pmp29cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp29cfg.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

pmp30cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp30cfg.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

pmp30cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
52:51

pmp30cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp30cfg.A
0OFF

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

1TOR

PMP entry 30 使用 top-of-range 匹配;上界来自 pmpaddr30,下界来自 pmpaddr29。

2NA4

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

3NAPOT

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

打开官方手册
50

pmp30cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp30cfg.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

pmp30cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp30cfg.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

pmp30cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp30cfg.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

pmp31cfg.L

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp31cfg.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

pmp31cfg.reserved

WARL/可为只读零

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

这个字段控制什么

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

常见取值

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

打开官方手册
60:59

pmp31cfg.A

WARL/可为只读零

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

这个字段控制什么

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

常见取值

pmp31cfg.A
0OFF

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

1TOR

PMP entry 31 使用 top-of-range 匹配;上界来自 pmpaddr31,下界来自 pmpaddr30。

2NA4

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

3NAPOT

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

打开官方手册
58

pmp31cfg.X

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp31cfg.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

pmp31cfg.W

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp31cfg.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

pmp31cfg.R

整体 WARL(R/W/X)

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

这个字段控制什么

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

常见取值

pmp31cfg.R
0R=0

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

1R=1

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

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

pmpcfg6 在 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 时先看什么

  • - RV32 的 pmpcfg6 包含 entries 24-27;RV64 的同一 CSR 包含 entries 24-31。
  • - 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。

常见问题

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

不相同。RV32 的 pmpcfg6 打包 pmp24cfg-pmp27cfg;RV64 的 pmpcfg6 打包 pmp24cfg-pmp31cfg。