微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM协处理器CP15寄存器详解

ARM协处理器CP15寄存器详解

时间:11-21 来源:互联网 点击:

310

一级映射描述符表的基地址(物理地址)

(四)CP15的寄存器C3

CP15中的寄存器C3定义了ARM处理器的16个域的访问权限。

310

D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1

D0

CP15的C3寄存器中,划分了16个域,每个区域由两位构成,这两位说明了当前内存的检查权限:

00:当前级别下,该内存区域不允许被访问,任何的访问都会引起一个domain fault,这时 AP位无效

01:当前级别下,该内存区域的访问必须配合该内存区域的段描述符中AP位进行权检查
10:保留状态(我们最好不要填写该值,以免引起不能确定的问题)
11:当前级别下,对该内存区域的访问都不进行权限检查。这时AP位无效

所以只有当相应域的编码为 01时,才会根据AP位和协处理器CP15中的C1寄存器的R,S位进行权限检查

(五)CP15的寄存器C5

CP15中的寄存器C5是失效状态寄存器,分为指令状态失效和数据状态失效。

MRC p15, 0, , c5, c0, 0 访问数据失效状态寄存器 
MRC p15, 0, , c5, c0, 1 访问指令状态失效寄存器 
编码格式如下所示: 

31 9

8

7 4

3 0

UNP/SBZP

0

域标识

状态标识

其中,域标识bit[7:4]表示存放引起存储访问失效的存储访问所属的域。状态标识bit[3:0]表示放引起存储访问失效的存储访问类型,该字段含义如下表所示(优先级由上到下递减)。 

引起访问失效的原因

状态标识

域标识

C6

终端异常(Terminal Exception

0b0010

无 效

生 产商定义

中断向量访问异常(Vector Exception)

0b0000

无 效

有 效

地 址对齐

0b00x1

无 效

有 效

一 级页表访问失效

0b1100

无 效

有 效

二 级页表访问失效

0b1110

有 效

有 效

基 于段的地址变换失效

0b0101

无 效

有 效

基 于页的地址变换失效

0b0111

有 效

有 效

基 于段的存储访问中域控制失效

0b1001

有 效

有 效

基 于页的存储访问中域控制失效

0b1101

有 效

有 效

基 于段的存储访问中访问权限控制失效

0b1111

有 效

有 效

基 于页的存储访问中访问权限控制失效

0b0100

有 效

有 效

基于段的cache预 取时外部存储系统失效

0b0110

有 效

有 效

基于页的cache预 取时外部存储系统失效

0b1000

有 效

有 效

基于段的非cache预 取时外部存储系统失效

0b1010

有 效

有 效

(六)CP15的寄存器C6

CP15中的寄存器C6是失效地址寄存器,其中保存了引起存储访问失效的地址,分为数据失效地址寄存器和指令失效地址寄存器

MRC p15, 0, , c6, c0, 0 访问数据失效地址寄存器 
MRC p15, 0, , c6, c0, 2 访问指令失效地址寄存器 

编码格式如下所示:

310

失效地址(虚拟地址)

(七)CP15的寄存器C7

CP15C7寄存器用来控制cache和写缓存,它是一个只写寄存器,读操作将产生不可预知的后果。

访问CP15C7寄存器的指令格式如下所示:

mcr p15, 0, , , crm, 的不同取值组合,实现不同功能

表中的数据是指Rd中的数据:

(八)CP15的寄存器C8

系统协处理器CP15的寄存器C8就是清除TLB内容的相关操作。它是一个只写的寄存器。

MCR p15,0,Rd,c8,CRm,opcode_2

Rd中为要写入C8寄存器的内容,CRm和opcode_2的不同组合决定指令执行的不同操作。

指令

Rd

含义

MCR p15, 0, Rd, c8, c5, 0 

0

使无效整个指令TLB

MCR p15, 0, Rd, c8, c5, 1 

虚拟地址

使无效指令TLB中的单个地址变换条目

MCR p15, 0, Rd, c8, c6, 0 

0

使无效整个数据TLB

MCR p15, 0, Rd, c8, c6, 1 

虚拟地址

使无效数据TLB中的单个地址变换条目

MCR p15, 0, , c8, c7, 0 

0

使无效整个数据和指令TLB

MCR p15, 0, , c8, c7, 1 

虚拟地址

使无效数据和指令TLB中的单个地址变换条目

(九)CP15的寄存器C12

CP15寄存器C12用来设置异常向量基地址,其编码格式如下所示:

MCR p15, 0, , c12, c0, 0 ;Rd中存放要修改的异常向量基地址 

31 5

4 0

异常向量基地址

Reserve

注:只有ARM11和cortex-a 可以任意修改异常向量基地址。arm7,ARM9,ARM10只可以在0地址或0xffff0000中

(十)CP15的寄存器C13

CP15中的寄存器C13用于快速上下文切换。其编码格式如下所示。

访问寄存器C13的指令格式如下所示。

MCRp15, 0,,,c0,0

MRC P15, 0,,,c0,0

其中,在读操作时,结果中位[31::25]返回PID,其他位 的数值是不可以预知的。写操作将设置PID的值。

当PID的值为0时,MVA = VA | (0(PID)<25),MVA=VA,相当于禁止了FCSE。系统复位后PID即为0.

当PID的值不为0时,相当于使能了FCSE。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top