4.1.1 訪問CP15寄存器的指令 訪問CP15寄存器指令的編碼格式及語法說明如下: | 27 24
| 23 21
| 20
| 19 16
| 15 12
| 11 8
| 7 5
| 4
| | | | | | | | | | | |
說明: <opcode_1>:協處理器行為操作碼,對于CP15來說,<opcode_1>永遠為0b000,否則結果未知。 <rd>:不能是r15/pc,否則,結果未知。 <crn>:作為目標寄存器的協處理器寄存器,編號為C0~C15。 <crm>:附加的目標寄存器或源操作數寄存器,如果不需要設置附加信息,將crm設置為c0,否則結果未知。 <opcode_2>:提供附加信息比如寄存器的版本號或者訪問類型,用于區分同一個編號的不同物理寄存器,可以省略<opcode_2>或者將其設置為0,否則結果未知。 | | | | 將ARM處理器的寄存器中的數據寫到CP15中的寄存器中 | mcr{<cond>} p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>} | | 將CP15中的寄存器中的數據讀到ARM處理器的寄存器中 | mcr{<cond>} p15, <opcode_1>, <rd>, <crn>, <crm>, {<opcode_2>} |
4.1.2 CP15寄存器介紹CP15的寄存器列表如表4-1所示。 表4-1 ARM處理器中CP15協處理器的寄存器 · CP15的寄存器C0 CP15中寄存器C0對應兩個標識符寄存器,由訪問CP15中的寄存器指令中的<opcode_2>指定要訪問哪個具體物理寄存器,<opcode_2>與兩個標識符寄存器的對應關系如下所示: 1)主標識符寄存器 訪問主標識符寄存器的指令格式如下所示: mrc p15, 0, r0, c0, c0, 0 ;將主標識符寄存器C0,0的值讀到r0中 ARM不同版本體系處理器中主標識符寄存器的編碼格式說明如下。 ARM7之后處理器的主標識符寄存器編碼格式如下所示: 31 24 23 20 19 16 15 4 3 0 | | | | | |
位
| 說 明
| | | | 生產商定義的產品主編號,其中最高4位即位[15:12]可能的取值為0~7但不能是0或7 | | ARM體系的版本號,可能的取值如下: 0x1 ARM體系版本4 0x2 ARM體系版本4T 0x3 ARM體系版本5 0x4 ARM體系版本5T 0x5 ARM體系版本5TE 其他 由ARM公司保留將來使用 | | 生產商定義的產品子編號,當產品主編號相同時,使用子編號來區分不同的產品子類,如產品中不同的高速緩存的大小等 | | 生產廠商的編號,現在已經定義的有以下值: 0x41 =A ARM公司 0x44 =D Digital Equipment公司 0x69 =I intel公司 |
|