ARM920T MMU-CP15協(xié)處理器的寄存器
— CDP 協(xié)處理器數(shù)操作指令
本文引用地址:http://butianyuan.cn/article/201611/316970.htm— LDC 協(xié)處理器數(shù)據(jù)加載指令
— STC 協(xié)處理器數(shù)據(jù)存儲指令
— MCR ARM 處理器寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令
— MRC 協(xié)處理器寄存器到ARM 處理器寄存器的數(shù)據(jù)傳送指令
1、CDP 指令
CDP 指令的格式為:
CDP{條件} 協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理 器操作碼2。 CDP 指令用于ARM 處理器通知ARM 協(xié)處理器執(zhí)行特定的操作,若協(xié)處理器不能成功完成特定的操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1 和協(xié)處理器操作碼2 為協(xié)處理器將要執(zhí)行的操作,目的寄存器和源寄存器均為協(xié)處理器的寄存器,指令不涉及ARM 處理器的寄存器和存儲器。
指令示例:
CDP P3 , 2 , C12 , C10 , C3 , 4 ;該指令完成協(xié)處理器 P3 的初始化
2、LDC 指令
LDC 指令的格式為:
LDC{條件}{L} 協(xié)處理器編碼,目的寄存器,[源寄存器]
LDC 指令用于將源寄存器所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到目的寄存器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數(shù)據(jù)的傳輸。
指令示例:
LDC P3 , C4 , [R0] ;將 ARM 處理器的寄存器 R0 所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器 P3 的寄存器 C4 中。
3、STC 指令
STC 指令的格式為:
STC{條件}{L} 協(xié)處理器編碼,源寄存器,[目的寄存器]
STC 指令用于將源寄存器中的字?jǐn)?shù)據(jù)傳送到目的寄存器所指向的存儲器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數(shù)據(jù)的傳輸。
指令示例:
STC P3 , C4 , [R0] ;將協(xié)處理器 P3 的寄存器 C4 中的字?jǐn)?shù)據(jù)傳送到 ARM 處理器的寄存器R0 所指向的存儲器中。
4、MCR 指令
MCR 指令的格式為:
MCR{條件} 協(xié)處理器編碼,協(xié)處理器操作碼1,源寄存器,目的寄存器1,目的寄存器2,協(xié)處理器操作碼2。
MCR 指令用于將ARM 處理器寄存器中的數(shù)據(jù)傳送到協(xié)處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1 和協(xié)處理器操作碼2 為協(xié)處理器將要執(zhí)行的操作,源寄存器為ARM 處理器的寄存器,目的寄存器1 和目的寄存器2 均為協(xié)處理器的寄存器。
指令示例:
MCR P3 , 3 , R0 , C4 , C5 , 6 ;該指令將 ARM 處理器寄存器 R0 中的數(shù)據(jù)傳送到協(xié)處理器 P3 的寄存器 C4 和 C5 中。
5、MRC 指令
MRC 指令的格式為:
MRC{條件} 協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。
MRC 指令用于將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM 處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1 和協(xié)處理器操作碼2 為協(xié)處理器將要執(zhí)行的操作,目的寄存器為ARM 處理器的寄存器,源寄存器1 和源寄存器2 均為協(xié)處理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;該指令將協(xié)處理器 P3 的寄存器中的數(shù)據(jù)傳送到 ARM 處理器寄存器中.
The ARM920T 有兩個具體協(xié)處理器
CP14(略)
CP15 —系統(tǒng)控制協(xié)處理器 (the system control coprocessor)他通過協(xié)處理器指令MCR和MRC提供具體的寄存器來配置和控制caches、MMU、保護系統(tǒng)、配置時鐘模式(在bootloader時鐘初始化用到)……
CP15的寄存器只能被MRC和MCR(Move to Coprocessor from ARM Register )指令訪問
他包括15個具體的寄存器如下:
-R0:ID號寄存器 這是一個只讀寄存器,返回一個32位的設(shè)備ID號,32具體功能參考2410 datesheet的 table 2-5
-R0:緩存類型寄存器(CACHE TYPE REGISTER) ,注意有2個R0,根據(jù)MCR操作數(shù)的不同傳送不同的值,這也一個只讀寄存器,包含了caches的信息。讀這個寄存器的方式是通過設(shè)置協(xié)處理操作碼為1.
如:
MRC p15,0,Rd,c0,c0,1; 返回caches的詳細(xì)信息
詳見:table 2-6
-R1:控制寄存器 2-10
-R2:轉(zhuǎn)換表基址寄存器(Translation Table Base --TTB) 2-12
-R3:域訪問控制寄存器(Domain access control )2-13
-R4:保留 2-14
-R5:異常狀態(tài)寄存器(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
評論