MCR指令将ARM处理器的寄存器中的值传到协处理器的寄存器中去
这里用CP15协处理器来作为例子
MCR{cond} p15, <opc1, <Rt, <CRn, <CRm, <opc2
【cond】命令
opc1: 协处理器执行的操作码
Rt : 要读取的ARM源处理器的寄存器
CRn :要写入的协处理器的寄存器
CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将CRm 设置为 C0,否则结果不可预测。
Cortex-A7中,CP15协处理器的c12
ldr r0 ,=0x87800000 ;写偏移地址
MCR p15,0,r0,c12,c0,0 ;ARM源处理器寄存器r0的值写入协处理器CP15寄存器c12的目标寄存器c0中。
/*
因为CP15寄存器c12的目标寄存器c0对应的是矢量基地址寄存器,所以对其操作就是设置偏移地址
*/
MRC指令将协处理器寄存器中的值传到ARM处理器的寄存器中去
MRC{cond} p15, <opc1, <Rt, <CRn, <CRm, <opc2
【cond】命令
opc1: 协处理器执行的操作码
Rt : 要写入的ARM源处理器的寄存器
CRn : 要读取的协处理器的寄存器
CRm:协处理器中附加的目标寄存器或者源操作数寄存器,如果不需要附加信息就将CRm 设置为 C0,否则结果不可预测。
MRC p15, 4, Rt, c15, c0, 0; Read Configuration Base Address Register
MRC p15,4,r0,c15,c0,0 ;获取CBAR中的值到ARM源处理器寄存器r0中
ADD r0,r0,#0x2000 ;GIC及地址加0x2000得到CPU接口端寄存器起始地址
版权声明:本文为weixin_48062060原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。