CP15是用于ARM存储管理的系统控制协处理器,并非CPU核外部件。它属于MMU(存储管理单元的)的一部分,起控制作用。CP15有16个32位寄存器c0-c15。和ARM核类似有些寄存器存在影子寄存器,即名称相同但是在不同模式下表示不同的寄存器。CP15指令中指定特定的标志位来区分这些寄存器。
MCR:把ARM处理器寄存器内容传到CP15寄存器中
MRC:把CP15寄存器内容传到ARM寄存器中
MCR p15, 0, rx, cx1, cx2,
1 2 3 4 5 6 7
1:cond条件码,无条件执行则忽略
3:这里0是操作码1(opcode1),p15固定为0
4:ARM寄存器
5:CP15寄存器c0-c15
6:附加寄存器,用于区分统一编号不同寄存器,无需附加信息则指定为c0
7:用于区分统一编号不同寄存器,无需附加信息则指定为0
例:把ARM r4寄存器内容传送到c1
MCR p15, 0 ,r4, c1, c0, 0
CP15中寄存器:
寄存器 | 作用 |
---|---|
c0 | ID编号和cache类型 |
c1 | 各种控制位 |
c2 | 地址转换表基址 |
c3 | 域访问控制位 |