以下内容源于网络资源的学习与整理,如有侵权请告知删除。
一、协处理器的简介
协处理器(cp,coprocessor)是SoC内部的处理单元,用来协助主CPU实现一些特定的功能,比如MMU、cache、TLB等内容。ARM在设计上支持16个协处理器,但是SoC一般只实现CP15。
二、协处理器的指令
ARM协处理器的指令主要是mcr、mrc这两个指令。主要用于操控协处理器中的寄存器(c0~c15)与 CPU中的寄存器之间的数据传输,其中mrc用于读取CP15中的寄存器,mcr用于写入CP15中的寄存器。
指令格式
mcr {<cond>} p15,<opcode_1>,<Rd>,<Crn>,<Crm>,{<opcode_2>}
格式说明
- p15,指协处理器cp15
- opcode_1:对于cp15永远为0
- Rd:ARM的普通寄存器
- Crn:cp15的寄存器,可选的合法值是c0~c15
- Crm:cp15的寄存器,一般设为c0
- opcode_2:一般省略或为0
代码示例
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #1
mcr p15, 0, r0, c1, c0, 0