码迷,mamicode.com
首页 > 其他好文 > 详细

ARM协处理器CP15寄存器详解

时间:2019-07-30 15:32:06      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:proc   col   处理器   存储管理   详解   通过   color   tle   指定   

ref:http://blog.csdn.net/gameit/article/details/13169405


 

背景:
  在uboot中,start.s中涉及到了 CP15 的有关操作。查阅有关资料,进行学习。
 
用于系统存储管理的协处理器CP15,可以通过 下面两条汇编指令控制
MCR {cond}     coproc,opcode1,Rd,CRn,CRm,opcode2
MRC {cond}     coproc,opcode1,Rd,CRn,CRm,opcode2

 *这2条指令仅适用于32位寄存器,因为64位寄存器仅由{CRm,opc1}标识。

 
<coproc>         指令操作的协处理器名,标准名为pn,n,为0~15 
<opcode1>      协处理器的特定操作码,对于CP15寄存器来说,opcode1永远为0,不为0时,操作结果不可预知
 <Rd>    作为元寄存器的ARM寄存器。其值被读写到得协处理器寄存器中。
        <Rd>不能为PC, 当其为PC时。指令操作结果不可预知。
<CRn>             存放第1个操作数的协处理器寄存器。
<CRm>            存放第2个操作数的协处理器寄存器。    (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为C0)
<opcode2>      可选的协处理器特定操作码。                (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)
 

在基于ARM的嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。

CP15可以包含16个32位的寄存器,其编号为0-15。实际上对于某些编号的寄存器可能对应有多个物理寄存器。在指令中指定特定的标志位来区分这些物理寄存器。有些类似于ARM寄存器中,处于不同的处理器模式时,ARM某些寄存器可能不同。

 
以 该命令为例:
  mrc   p15,   0,    r0,     c1,   c0, 0
     coproc,opcode1,Rd,    CRn,   CRm,opcode2

p15:   coproc         指令操作的协处理器名
0:    opcode1      opcode1永远为0,不为0时,操作结果不可预知
R0:   Rd      作为 指令读写有关用的寄存器
c1:   CRn
c0:   CRm
0:   opcode2

 

ARM协处理器CP15寄存器详解

标签:proc   col   处理器   存储管理   详解   通过   color   tle   指定   

原文地址:https://www.cnblogs.com/schips/p/11270256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!