ARM 微处理器可支撑多达 16 个协处理器,用于各种协处理操作,在程序履行的过程中,每个协处理器只履行针对本身的协处理指令,疏忽 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令首要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包含以下 5 条:
— CDP 协处理器数操作指令
— LDC 协处理器数据加载指令
— STC 协处理器数据存储指令
— MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令
— MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令
1、CDP 指令
CDP 指令的格局为:
CDP{条件} 协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理 器操作码2。 CDP 指令用于ARM 处理器告诉ARM 协处理器履行特定的操作,若协处理器不能成功完结特定的操作,则发生未定义指令反常。其间协处理器操作码1 和协处理器操作码2 为协处理器即将履行的操作,意图寄存器和源寄存器均为协处理器的寄存器,指令不触及ARM 处理器的寄存器和存储器。
指令示例:
CDP P3 , 2 , C12 , C10 , C3 , 4 ;该指令完结协处理器 P3 的初始化
2、LDC 指令
LDC 指令的格局为:
LDC{条件}{L} 协处理器编码,意图寄存器,[源寄存器]
LDC 指令用于将源寄存器所指向的存储器中的字数据传送到意图寄存器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项表明指令为长读取操作,如用于双精度数据的传输。
指令示例:
LDC P3 , C4 , [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。
3、STC 指令
STC 指令的格局为:
STC{条件}{L} 协处理器编码,源寄存器,[意图寄存器]
STC 指令用于将源寄存器中的字数据传送到意图寄存器所指向的存储器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项表明指令为长读取操作,如用于双精度数据的传输。
指令示例:
STC P3 , C4 , [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。
4、MCR 指令
MCR 指令的格局为:
MCR{条件} 协处理器编码,协处理器操作码1,源寄存器,意图寄存器1,意图寄存器2,协处理器操作码2。
MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完结操作,则发生未定义指令反常。其间协处理器操作码1 和协处理器操作码2 为协处理器即将履行的操作,源寄存器为ARM 处理器的寄存器,意图寄存器1 和意图寄存器2 均为协处理器的寄存器。
指令示例:
MCR P3 , 3 , R0 , C4 , C5 , 6 ;该指令将 ARM 处理器寄存器 R0 中的数据传送到协处理器 P3 的寄存器 C4 和 C5 中。
5、MRC 指令
MRC 指令的格局为:
MRC{条件} 协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理器操作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完结操作,则发生未定义指令反常。其间协处理器操作码1 和协处理器操作码2 为协处理器即将履行的操作,意图寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.
The ARM920T 有两个详细协处理器
CP14(略)
CP15 —体系操控协处理器 (the system control coprocessor)他经过协处理器指令MCR和MRC供给详细的寄存器来装备和操控caches、MMU、维护体系、装备时钟形式(在bootloader时钟初始化用到)……
CP15的寄存器只能被MRC和MCR(Move to Coprocessor from ARM Register )指令拜访
他包含15个详细的寄存器如下:
-R0:ID号寄存器 这是一个只读寄存器,回来一个32位的设备ID号,32详细功用参阅2410 datesheet的 table 2-5
-R0:缓存类型寄存器(CACHE TYPE REGISTER) ,留意有2个R0,依据MCR操作数的不同传送不同的值,这也一个只读寄存器,包含了caches的信息。读这个寄存器的方法是经过设置协处理操作码为1.
如:
MRC p15,0,Rd,c0,c0,1; 回来caches的详细信息
详见:table 2-6
-R1:操控寄存器 2-10
-R2:转化表基址寄存器(Translation Table Base –TTB) 2-12
-R3:域拜访操控寄存器(Domain access control )2-13
-R4:保存 2-14
-R5:反常状况寄存器(fault status -FSR)2-14
-R6:反常地址寄存器(fault address -FAR)2-15
-R7:缓存操作寄存器 2-15
-R8:TLB操作寄存器 2-18
-R9:缓存确定寄存器 2-19
-R10:TLB 确定寄存器 2-21
-R11-12&14:保存
-R13:处理器ID 2-22
-R15:测验装备寄存器 2-24