ARM11 (S3C6410) CP15寄存器
扫描二维码
随时随地手机看文章
关于MMU编程,有几个是要经常查阅的资料。这里我把它整理成一篇文档,因此篇幅太长,节选发上来,全部内容放在附件的PDF当中。
这个文档主要有三个内容
一.协议处器CP15 中寄存器的全部说明.
二.ARM 协处理指令
三.CP15命令列表
一.协议处器CP15 中寄存器说明
---------------------------------------------------------------------------
引自 http://blog.csdn.net/genglei1022/archive/2010/07/05/5712843.aspx
寄存器编号基本作用在 MMU 中的作用在 PU 中的作用
0ID 编码(只读)ID 编码和 cache 类型
1控 制位(可读写)各 种控制位
2存 储保护和控制地 址转换表基地址Cachability 的控制位
3存 储保护和控制域 访问控制位Bufferablity 控制位
4存 储保护和控制保 留保 留
5存 储保护和控制内 存失效状态访 问权限控制位
6存 储保护和控制内 存失效地址保 护区域控制
7高 速缓存和写缓存高 速缓存和写缓存控制
8存 储保护和控制TLB 控制保 留
9高 速缓存和写缓存高 速缓存锁定
10存 储保护和控制TLB 锁定保 留
11保 留
12保 留
13进 程标识符进 程标识符
14保 留
15因 不同设计而异因 不同设计而异因 不同设计而异
二. ARM协处理器指令
----------------------------------------------------------------------------
引自http://blog.csdn.net/aaaaatiger/archive/2007/09/02/1769470.aspx
ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。
ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5 条:
— CDP 协处理器数操作指令
— LDC 协处理器数据加载指令
— STC 协处理器数据存储指令
— MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令
— MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令
1、CDP 指令
CDP 指令的格式为:
CDP{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理
器操作码2。
CDP 指令用于ARM 处理器通知ARM 协处理器执行特定的操作,若协处理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM 处理器的寄存器和存储器。
指令示例:
CDP P3 , 2 , C12 , C10 , C3 , 4 ;该指令完成协处理器 P3 的初始化
2、LDC 指令
LDC 指令的格式为:
LDC{条件}{L} 协处理器编码,目的寄存器,[源寄存器]
LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。
指令示例:
LDC P3 , C4 , [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器P3 的寄存器 C4 中。
3、STC 指令
STC 指令的格式为:
STC{条件}{L} 协处理器编码,源寄存器,[目的寄存器]
STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。
指令示例:
STC P3 , C4 , [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0所指向的存储器中。
4、MCR 指令
MCR 指令的格式为:
MCR{条件} 协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处
理器操作码2。
MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,源寄存器为ARM 处理器的寄存器,目的寄存器1 和目的寄存器2 均为协处理器的寄存器。
指令示例:
MCR P3 , 3 , R0 , C4 , C5 , 6 ;该指令将 ARM 处理器寄存器 R0 中的数据传送到协处理器 P3 的寄存器 C4 和 C5 中。
5、MRC 指令
MRC 指令的格式为:
MRC{条件} 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理
器操作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,目的寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.
二. 协处理器指令命令列表
-------------------------------------------------------------
引自 http://www.iphonedevwiki.net/index.php/Coprocessors
Register allocation for Opcode 0
cN cM opcode2 Register Readable (mrc) Writable (mcr) Comments
c0c00Main IDPrivilegedNoContains vendor, architecture, part number, etc.[2]
c0c01Cache typePrivilegedNoSize and architecture of cache.[3]
c0c02Tightly coupled memory (TCM) statusPrivilegedNo
c0c03Translation look-aside buffer (TLB) typePrivilegedNo
c0c05Multiprocessor IDPrivilegedNo(Cortex only.)