第三章ARM体系结构介绍.ppt

  1. 1、本文档共193页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
寄存器0 寄存器0可以提供对多个寄存器的访问,被访问的寄存器由Opcode_2字段的值决定。 ID编码寄存器 Cache类型寄存器 该寄存器为只读寄存器,返回32位的设备ID编码。 通过读CP15寄存器0并将opcode_2字段设置0可以访问ID编码寄存器。例如: MRC p15,0,Rd,c0,c0,0 ;返回ID寄存器 该寄存器为只读寄存器,它包含ICache和DCache的大小以及体系结构的相关信息。 通过读CP15寄存器0并将opcode_2字段设置为1可以访问Cache类型寄存器,例如: MRC p15,0,Rd,c0,c0,1 ;返回Cache的详细资料 寄存器1 该寄存器包含ARM920T的控制位。所有保留位必须按要求写入0或1,或者使用“读-修改-写”进行写入。读保留位将得到不可预知的值。读写这个寄存器的指令如下: MRC p15,0,Rd,c1,c0,0 ;读控制寄存器 MCR p15,0,Rd,c1,c0,0 ;写控制寄存器 ? 除了V位,所有已定义的控制位在复位时被设置为0。 寄存器2 寄存器c2是变换表基址(TTB,Translation Table Base)寄存器,用于保存当前活动的第一级变换表的基地址。 从寄存器2读时,将返回位[31:14]中指向的当前活动的第一级变换表的指针。向寄存器2写时,使用写入值的[31:14]位的值来更新第一级变换表的指针。位[13:0]在写时应该是0,读时是不可预知的。 使用如下指令可以访问TTB: MRC p15,0,Rd,c2,c0,0 ;读TTB寄存器 MCR p15,0,Rd,c2,c0,0 ;写TTB寄存器 寄存器3 寄存器3是可读写的域访问控制寄存器,包含16个两位字段。每一个两位字段分别定义了16个域(D15-D0)的访问权限。使用如下指令可以访问域访问控制寄存器: MRC p15,0,Rd,c3,c0,0 ;读域15:0访问权限 MCR p15,0,Rd,c3,c0,0 ;写域15:0访问权限 寄存器5 寄存器5是故障状态寄存器(FSR,Fault Status Register)。FSR保存最近一次发生数据故障的原因,即当产生数据中止时指示试图进行访问的域和类型。 可以使用如下指令访问数据和预取FSR: MRC p15,0,Rd,c5,c0,0 ;读数据FSR MCR p15,0,Rd,c5,c0,0 ;写数据FSR MRC p15,0,Rd,c5,c0,1 ;读预取FSR MCR p15,0,Rd,c5,c0,1 ;写预取FSR 寄存器6 寄存器6是故障地址寄存器(FAR,Fault Address Register)。FAR中包含最近一次出现故障时试图被访问的MVA。FAR仅仅在出现数据中止时被更新,而出现预取故障时不会被更新(预取故障的地址保存在R14中)。 可以使用如下指令访问FAR: MRC p15,0,Rd,c6,c0,0 ;读FAR数据 MCR p15,0,Rd,c6,c0,0 ;写FAR数据 寄存器7 寄存器7是一个只写寄存器,用于管理ICache和DCache。 可以使用如下指令实现向寄存器7的写入: MCR p15,opcode_1,Rd,CRn,CRm,opcode_2 寄存器8 寄存器8是一个只写寄存器,用于管理地址变换后备缓冲器(Translation Lookaside Buffer,TLB),包括指令TLB(I TLB)和数据TLB(D TLB)。 执行TLB操作的指令如下: 寄存器9 寄存器9是Cache锁定寄存器,复位时值为0x0。Cache锁定寄存器允许通过软件来单独控制ICache或DCache中的哪一行被加载以实现行填充,并且能够在行填充期间阻止ICache或DCache中的某些行被逐出,使其锁定在Cache中。 opcode_2的值决定被访问的Cache寄存器: opcode_2=0x0 访问DCache锁定寄存器。 ?opcode_2=0x1 访问ICache锁定寄存器。 用于访问Cache锁定寄存器的指令: 寄存器10 寄存器10是TLB锁定寄存器,复位时值为0x0。每个TLB都有一个TLB锁定寄存器,opcode_2的值用来决定哪一个TLB寄存器被访问: opcode_2=0x0 访问D TLB寄存器。 opcode_2=0x1 访问I TLB寄存器。 用来访问TLB锁定寄存器的指令: (6)SWP ARM存储器访问指令 在寄存器和存储器之间进行

文档评论(0)

didala + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档