zoukankan      html  css  js  c++  java
  • 浅析ARM协处理器CP15寄存器有关指令:MCRMRC

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


     背景:

      在uboot中,start.s中涉及到了 CP15 的有关操作。查阅有关资料,进行学习。
        mrc p15, 0, r0, c1, c0, 0
        bic r0, r0, #0x00002000 @ clear bits 13 (--V-)
        bic r0, r0, #0x00000007 @ clear bits 2:0 (-CAM)
        orr r0, r0, #0x00000002 @ set bit 1 (--A-) Align
        orr r0, r0, #0x00000800 @ set bit 11 (Z---) BTB
        mcr p15, 0, r0, c1, c0, 0

    在基于ARM的嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。很多高级的寄存器并不能够直接访问。

    CP15可以包含16个32位的寄存器,其编号为0-15。

    实际上对于某些编号的寄存器可能对应有多个物理寄存器。在指令中指定特定的标志位来区分这些物理寄存器。

    有些类似于ARM寄存器中,处于不同的处理器模式时,ARM某些寄存器可能不同。

    在这里不对CP15各组寄存器做详细的分析,仅提供查阅的手段。

     
    MCR/MRC 用于系统存储管理的协处理器CP15,指令格式:
      MCR {cond}     coproc,opcode1,Rd,CRn,CRm,opcode2
      MRC {cond}     coproc,opcode1,Rd,CRn,CRm,opcode2

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

     
    <coproc>         指令操作的协处理器名,标准名为pn,n,为0~15 
    <opcode1>      协处理器的特定操作码,对于CP15寄存器来说,opcode1永远为0,不为0时,操作结果不可预知
     <Rd>    作为元寄存器的ARM寄存器。其值被读写到得协处理器寄存器中。
            <Rd>不能为PC, 当其为PC时。指令操作结果不可预知。
    <CRn>             存放第1个操作数的协处理器寄存器。
    <CRm>            存放第2个操作数的协处理器寄存器。    (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为C0)
    <opcode2>      可选的协处理器特定操作码。                (用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)
     
    在明白了指令格式以后,我们记住了查阅有关的文档:《DDI0406C arm_architecture_reference_manual.pdf》。
     
     

     找到了对应的寄存器,STCLR

    结合文章开头中间那几行语句,发现这段代码是对于STCLR不同的位进行置位/清零。

     所以,整段代码做了这样的事情:

    1. 读取 SCTLR 的值到 R0

    2. 修改 对应的位

    3. 写回 SCTLR

     * 注意: 在操作CP15 有关寄存器时,可能要求权限等级在PL1

    文章完。

     
  • 相关阅读:
    hdu 2019 数列有序!
    hdu 2023 求平均成绩
    HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
    51nod 1264 线段相交
    Gym 100801A Alex Origami Squares (求正方形边长)
    HDU 5512 Pagodas (gcd)
    HDU 5510 Bazinga (字符串匹配)
    UVALive 7269 Snake Carpet (构造)
    UVALive 7270 Osu! Master (阅读理解题)
    UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  • 原文地址:https://www.cnblogs.com/schips/p/11270256.html
Copyright © 2011-2022 走看看