天天看點

ARM 協處理器

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

文章來源:http://blog.chinaunix.net/u2/62358/showart_499620.html