CSR 位字段

RISC-V pmpcfg0 CSR 寄存器详解

地址 0x3A0特权级 Machine 模式访问 读写 / XLENMachine 物理内存保护 CSR

pmpcfg0 是物理内存保护配置 CSR,描述一组 PMP 区域的读/写/执行权限、地址匹配方式和锁定位。

字段映射

按 bit 字段理解 pmpcfg0

48 个关键字段
7

pmp0cfg.L

读写

PMP 条目 0 的锁定位。

这个字段控制什么

  • - PMP 条目 0 的锁定位。

常见取值

pmp0cfg.L
0未锁定

PMP entry 0 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr0 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 0 锁定;写入 pmp0cfg 和 pmpaddr0 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。entry 0 的 TOR 下界为 0,因此不涉及前一项 pmpaddr 锁定。

打开官方手册
6:5

pmp0cfg.reserved

只读

PMP 条目 0 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 0 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
4:3

pmp0cfg.A

读写

PMP 条目 0 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 0 的地址匹配模式。

常见取值

pmp0cfg.A
0OFF

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

1TOR

PMP entry 0 使用 top-of-range 匹配;上界来自 pmpaddr0,下界为 0。

2NA4

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

3NAPOT

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

打开官方手册
2

pmp0cfg.X

读写

PMP 条目 0 的执行权限。

这个字段控制什么

  • - PMP 条目 0 的执行权限。

常见取值

pmp0cfg.X
0禁止执行

PMP entry 0 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 0 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
1

pmp0cfg.W

读写

PMP 条目 0 的写权限。

这个字段控制什么

  • - PMP 条目 0 的写权限。

常见取值

pmp0cfg.W
0禁止写

PMP entry 0 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 0 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
0

pmp0cfg.R

读写

PMP 条目 0 的读权限。

这个字段控制什么

  • - PMP 条目 0 的读权限。

常见取值

pmp0cfg.R
0禁止读

PMP entry 0 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 0 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
15

pmp1cfg.L

读写

PMP 条目 1 的锁定位。

这个字段控制什么

  • - PMP 条目 1 的锁定位。

常见取值

pmp1cfg.L
0未锁定

PMP entry 1 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr1 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 1 锁定;写入 pmp1cfg 和 pmpaddr1 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr0 也会被锁定。

打开官方手册
14:13

pmp1cfg.reserved

只读

PMP 条目 1 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 1 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
12:11

pmp1cfg.A

读写

PMP 条目 1 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 1 的地址匹配模式。

常见取值

pmp1cfg.A
0OFF

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

1TOR

PMP entry 1 使用 top-of-range 匹配;上界来自 pmpaddr1,下界来自 pmpaddr0。

2NA4

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

3NAPOT

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

打开官方手册
10

pmp1cfg.X

读写

PMP 条目 1 的执行权限。

这个字段控制什么

  • - PMP 条目 1 的执行权限。

常见取值

pmp1cfg.X
0禁止执行

PMP entry 1 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 1 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
9

pmp1cfg.W

读写

PMP 条目 1 的写权限。

这个字段控制什么

  • - PMP 条目 1 的写权限。

常见取值

pmp1cfg.W
0禁止写

PMP entry 1 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 1 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
8

pmp1cfg.R

读写

PMP 条目 1 的读权限。

这个字段控制什么

  • - PMP 条目 1 的读权限。

常见取值

pmp1cfg.R
0禁止读

PMP entry 1 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 1 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
23

pmp2cfg.L

读写

PMP 条目 2 的锁定位。

这个字段控制什么

  • - PMP 条目 2 的锁定位。

常见取值

pmp2cfg.L
0未锁定

PMP entry 2 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr2 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 2 锁定;写入 pmp2cfg 和 pmpaddr2 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr1 也会被锁定。

打开官方手册
22:21

pmp2cfg.reserved

只读

PMP 条目 2 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 2 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
20:19

pmp2cfg.A

读写

PMP 条目 2 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 2 的地址匹配模式。

常见取值

pmp2cfg.A
0OFF

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

1TOR

PMP entry 2 使用 top-of-range 匹配;上界来自 pmpaddr2,下界来自 pmpaddr1。

2NA4

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

3NAPOT

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

打开官方手册
18

pmp2cfg.X

读写

PMP 条目 2 的执行权限。

这个字段控制什么

  • - PMP 条目 2 的执行权限。

常见取值

pmp2cfg.X
0禁止执行

PMP entry 2 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 2 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
17

pmp2cfg.W

读写

PMP 条目 2 的写权限。

这个字段控制什么

  • - PMP 条目 2 的写权限。

常见取值

pmp2cfg.W
0禁止写

PMP entry 2 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 2 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
16

pmp2cfg.R

读写

PMP 条目 2 的读权限。

这个字段控制什么

  • - PMP 条目 2 的读权限。

常见取值

pmp2cfg.R
0禁止读

PMP entry 2 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 2 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
31

pmp3cfg.L

读写

PMP 条目 3 的锁定位。

这个字段控制什么

  • - PMP 条目 3 的锁定位。

常见取值

pmp3cfg.L
0未锁定

PMP entry 3 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr3 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 3 锁定;写入 pmp3cfg 和 pmpaddr3 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr2 也会被锁定。

打开官方手册
30:29

pmp3cfg.reserved

只读

PMP 条目 3 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 3 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
28:27

pmp3cfg.A

读写

PMP 条目 3 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 3 的地址匹配模式。

常见取值

pmp3cfg.A
0OFF

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

1TOR

PMP entry 3 使用 top-of-range 匹配;上界来自 pmpaddr3,下界来自 pmpaddr2。

2NA4

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

3NAPOT

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

打开官方手册
26

pmp3cfg.X

读写

PMP 条目 3 的执行权限。

这个字段控制什么

  • - PMP 条目 3 的执行权限。

常见取值

pmp3cfg.X
0禁止执行

PMP entry 3 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 3 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
25

pmp3cfg.W

读写

PMP 条目 3 的写权限。

这个字段控制什么

  • - PMP 条目 3 的写权限。

常见取值

pmp3cfg.W
0禁止写

PMP entry 3 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 3 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
24

pmp3cfg.R

读写

PMP 条目 3 的读权限。

这个字段控制什么

  • - PMP 条目 3 的读权限。

常见取值

pmp3cfg.R
0禁止读

PMP entry 3 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 3 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
39

pmp4cfg.L

读写

PMP 条目 4 的锁定位。

这个字段控制什么

  • - PMP 条目 4 的锁定位。

常见取值

pmp4cfg.L
0未锁定

PMP entry 4 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr4 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 4 锁定;写入 pmp4cfg 和 pmpaddr4 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr3 也会被锁定。

打开官方手册
38:37

pmp4cfg.reserved

只读

PMP 条目 4 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 4 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
36:35

pmp4cfg.A

读写

PMP 条目 4 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 4 的地址匹配模式。

常见取值

pmp4cfg.A
0OFF

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

1TOR

PMP entry 4 使用 top-of-range 匹配;上界来自 pmpaddr4,下界来自 pmpaddr3。

2NA4

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

3NAPOT

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

打开官方手册
34

pmp4cfg.X

读写

PMP 条目 4 的执行权限。

这个字段控制什么

  • - PMP 条目 4 的执行权限。

常见取值

pmp4cfg.X
0禁止执行

PMP entry 4 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 4 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
33

pmp4cfg.W

读写

PMP 条目 4 的写权限。

这个字段控制什么

  • - PMP 条目 4 的写权限。

常见取值

pmp4cfg.W
0禁止写

PMP entry 4 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 4 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
32

pmp4cfg.R

读写

PMP 条目 4 的读权限。

这个字段控制什么

  • - PMP 条目 4 的读权限。

常见取值

pmp4cfg.R
0禁止读

PMP entry 4 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 4 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
47

pmp5cfg.L

读写

PMP 条目 5 的锁定位。

这个字段控制什么

  • - PMP 条目 5 的锁定位。

常见取值

pmp5cfg.L
0未锁定

PMP entry 5 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr5 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 5 锁定;写入 pmp5cfg 和 pmpaddr5 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr4 也会被锁定。

打开官方手册
46:45

pmp5cfg.reserved

只读

PMP 条目 5 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 5 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
44:43

pmp5cfg.A

读写

PMP 条目 5 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 5 的地址匹配模式。

常见取值

pmp5cfg.A
0OFF

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

1TOR

PMP entry 5 使用 top-of-range 匹配;上界来自 pmpaddr5,下界来自 pmpaddr4。

2NA4

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

3NAPOT

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

打开官方手册
42

pmp5cfg.X

读写

PMP 条目 5 的执行权限。

这个字段控制什么

  • - PMP 条目 5 的执行权限。

常见取值

pmp5cfg.X
0禁止执行

PMP entry 5 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 5 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
41

pmp5cfg.W

读写

PMP 条目 5 的写权限。

这个字段控制什么

  • - PMP 条目 5 的写权限。

常见取值

pmp5cfg.W
0禁止写

PMP entry 5 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 5 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
40

pmp5cfg.R

读写

PMP 条目 5 的读权限。

这个字段控制什么

  • - PMP 条目 5 的读权限。

常见取值

pmp5cfg.R
0禁止读

PMP entry 5 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 5 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
55

pmp6cfg.L

读写

PMP 条目 6 的锁定位。

这个字段控制什么

  • - PMP 条目 6 的锁定位。

常见取值

pmp6cfg.L
0未锁定

PMP entry 6 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr6 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 6 锁定;写入 pmp6cfg 和 pmpaddr6 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr5 也会被锁定。

打开官方手册
54:53

pmp6cfg.reserved

只读

PMP 条目 6 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 6 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
52:51

pmp6cfg.A

读写

PMP 条目 6 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 6 的地址匹配模式。

常见取值

pmp6cfg.A
0OFF

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

1TOR

PMP entry 6 使用 top-of-range 匹配;上界来自 pmpaddr6,下界来自 pmpaddr5。

2NA4

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

3NAPOT

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

打开官方手册
50

pmp6cfg.X

读写

PMP 条目 6 的执行权限。

这个字段控制什么

  • - PMP 条目 6 的执行权限。

常见取值

pmp6cfg.X
0禁止执行

PMP entry 6 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 6 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
49

pmp6cfg.W

读写

PMP 条目 6 的写权限。

这个字段控制什么

  • - PMP 条目 6 的写权限。

常见取值

pmp6cfg.W
0禁止写

PMP entry 6 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 6 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
48

pmp6cfg.R

读写

PMP 条目 6 的读权限。

这个字段控制什么

  • - PMP 条目 6 的读权限。

常见取值

pmp6cfg.R
0禁止读

PMP entry 6 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 6 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
63

pmp7cfg.L

读写

PMP 条目 7 的锁定位。

这个字段控制什么

  • - PMP 条目 7 的锁定位。

常见取值

pmp7cfg.L
0未锁定

PMP entry 7 未锁定;该 entry 的配置可按 WARL 规则修改。M-mode 命中该 entry 的访问会成功,R/W/X 权限只约束 S/U 有效特权访问。注意 pmpaddr7 仍可能因后一条 locked TOR entry 而被锁定。

1锁定

PMP entry 7 锁定;写入 pmp7cfg 和 pmpaddr7 会被忽略直到 hart reset,并且 R/W/X 权限施加到所有特权模式。若 A=TOR,pmpaddr6 也会被锁定。

打开官方手册
62:61

pmp7cfg.reserved

只读

PMP 条目 7 的保留位;写入按 WARL/保留位规则处理。

这个字段控制什么

  • - PMP 条目 7 的保留位;写入按 WARL/保留位规则处理。

常见取值

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

打开官方手册
60:59

pmp7cfg.A

读写

PMP 条目 7 的地址匹配模式。

这个字段控制什么

  • - PMP 条目 7 的地址匹配模式。

常见取值

pmp7cfg.A
0OFF

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

1TOR

PMP entry 7 使用 top-of-range 匹配;上界来自 pmpaddr7,下界来自 pmpaddr6。

2NA4

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

3NAPOT

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

打开官方手册
58

pmp7cfg.X

读写

PMP 条目 7 的执行权限。

这个字段控制什么

  • - PMP 条目 7 的执行权限。

常见取值

pmp7cfg.X
0禁止执行

PMP entry 7 不授予执行权限;命中该 entry 的 S/U 取指会失败,M-mode 取指仅在该 entry 锁定时受此位约束。

1允许执行

PMP entry 7 授予执行权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

打开官方手册
57

pmp7cfg.W

读写

PMP 条目 7 的写权限。

这个字段控制什么

  • - PMP 条目 7 的写权限。

常见取值

pmp7cfg.W
0禁止写

PMP entry 7 不授予写权限;命中该 entry 的 S/U store/AMO 等写类访问会失败,M-mode 写访问仅在该 entry 锁定时受此位约束。

1允许写(需 R=1)

PMP entry 7 授予写权限,前提是 R=1;R=0 且 W=1 是官方保留组合,不是可移植配置。

打开官方手册
56

pmp7cfg.R

读写

PMP 条目 7 的读权限。

这个字段控制什么

  • - PMP 条目 7 的读权限。

常见取值

pmp7cfg.R
0禁止读

PMP entry 7 不授予读权限;命中该 entry 的 S/U 读访问会失败,M-mode 读访问仅在该 entry 锁定时受此位约束。

1允许读

PMP entry 7 授予读权限,前提是该 entry 匹配且其他 PMP/PMA/特权规则也允许。

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

pmpcfg0 是 Machine 物理内存保护 CSR 中的 读写 CSR,地址为 0x3A0。先确认当前特权级和扩展实现情况,再根据位字段判断该 CSR 影响的架构状态。

pmpcfg0 的地址、最低访问特权级和读写属性按官方 CSR 表核对:0x3A0,Machine 模式,读写。
pmpcfg0 属于物理内存保护路径;应与相邻 pmpcfg/pmpaddr 项一起理解,而不是孤立写单个字段。
写入前只修改目标字段并保留未修改位;WPRI/保留字段应按官方规范和实现返回值解释。

读这个 CSR 时先看什么

  • - 先确认当前 hart 是否实现 pmpcfg0,未实现或权限不足的访问会触发非法指令异常。
  • - 结合地址 0x3A0 和最低访问特权级(Machine 模式)判断软件是否可以直接读取。
  • - 读取保留位或 WARL/WLRL 位时不要假设固定值,应按规范和实现返回值解释。

写入前的风险检查

  • - 写入前保留未修改的位,避免把保留位或实现定义位写成非规范值。
  • - 优先使用 CSRRS/CSRRC 做局部置位或清位,避免 CSRRW 覆盖并发更新的状态位。

放回真实流程里理解

1

初始化或进入相关特权流程时,软件先读取 pmpcfg0 了解当前状态。

2

根据字段定义只修改目标位,保留其余位的原值。

3

修改后再次读取或通过后续 trap/中断/上下文切换行为验证配置是否生效。

常见问题

pmpcfg0 可以在任意特权级访问吗?

不能只看 CSR 名称判断。官方 CSR 地址编码和表格给出最低访问特权级;pmpcfg0 当前记录为 Machine 模式,权限不足或未实现时访问会触发非法指令异常。

写 pmpcfg0 时最容易忽略什么?

不要把整个 CSR 当普通整数覆盖。应只修改目标字段,保留未修改位,并按规范处理 WARL、WLRL、WPRI 或保留字段。