ARM处理器中CP15协处理器的寄存器
时间:11-09
来源:互联网
点击:
本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令。
指令
说明
语法格式
mcr
将ARM处理器的寄存器中的数据写到CP15中的寄存器中
mcr{}p15,,,,, {}
mrc
将CP15中的寄存器中的数据读到ARM处理器的寄存器中
mcr{}p15,,,,, {}4.1.2CP15寄存器介绍CP15的寄存器列表如表4-1所示。
表4-1ARM处理器中CP15协处理器的寄存器
opcode_2编码
对应的标识符号寄存器
0b000
主标识符寄存器
0b001
cache类型标识符寄存器
其他
保留1)主标识符寄存器
访问主标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 0;将主标识符寄存器C0,0的值读到r0中
ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。
ARM7之后处理器的主标识符寄存器编码格式如下所示:
ARM7处理器的主标识符寄存器编码格式如下所示:
续表
ARM7之前处理器的主标识符寄存器编码格式如下所示:
2)cache类型标识符寄存器
访问cache类型标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 1;将cache类型标识符寄存器C0,1的值读到r0中
ARM处理器中cache类型标识符寄存器的编码格式如下所示:
其中控制字段位[28:25]的含义说明如下:
表4-2cache类型标识符寄存器的控制字段位[28:25]
4.1.1访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:
3128 | 2724 | 2321 | 20 | 1916 | 1512 | 118 | 75 | 4 | 30 |
cond | 1 1 1 0 | opcode_1 | L | cr n | rd | 1 1 1 1 | opcode_2 | 1 | crm |
指令
说明
语法格式
mcr
将ARM处理器的寄存器中的数据写到CP15中的寄存器中
mcr{}p15,,,,, {}
mrc
将CP15中的寄存器中的数据读到ARM处理器的寄存器中
mcr{}p15,,,,, {}4.1.2CP15寄存器介绍CP15的寄存器列表如表4-1所示。
表4-1ARM处理器中CP15协处理器的寄存器
寄存器编号 | 基本作用 | 在MMU中的作用 | 在PU中的作用 |
0 | ID编码(只读) | ID编码和cache类型 | |
1 | 控制位(可读写) | 各种控制位 | |
2 | 存储保护和控制 | 地址转换表基地址 | Cachability的控制位 |
3 | 存储保护和控制 | 域访问控制位 | Bufferablity控制位 |
4 | 存储保护和控制 | 保留 | 保留 |
5 | 存储保护和控制 | 内存失效状态 | 访问权限控制位 |
6 | 存储保护和控制 | 内存失效地址 | 保护区域控制 |
7 | 高速缓存和写缓存 | 高速缓存和写缓存控制 | |
8 | 存储保护和控制 | TLB控制 | 保留 |
9 | 高速缓存和写缓存 | 高速缓存锁定 | |
10 | 存储保护和控制 | TLB锁定 | 保留 |
11 | 保留 | ||
12 | 保留 | ||
13 | 进程标识符 | 进程标识符 | |
14 | 保留 | ||
15 | 因不同设计而异 | 因不同设计而异 | 因不同设计而异 |
opcode_2编码
对应的标识符号寄存器
0b000
主标识符寄存器
0b001
cache类型标识符寄存器
其他
保留1)主标识符寄存器
访问主标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 0;将主标识符寄存器C0,0的值读到r0中
ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。
ARM7之后处理器的主标识符寄存器编码格式如下所示:
31242320191615430 | ||||
由生产商确定 | 产品子编号 | ARM体系版本号 | 产品主编号 | 处理器版本号 |
位 | 说明 |
位[3: 0] | 生产商定义的处理器版本号 |
位[15: 4] | 生产商定义的产品主编号,其中最高4位即位[15:12]可能的取值为0~7但不能是0或7 |
位[19: 16] | ARM体系的版本号,可能的取值如下: 0x1ARM体系版本4 0x2ARM体系版本4T 0x3ARM体系版本5 0x4ARM体系版本5T 0x5ARM体系版本5TE 其他由ARM公司保留将来使用 |
位[23: 20] | 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等 |
位[31: 24] | 生产厂商的编号,现在已经定义的有以下值: 0x41=AARM公司 0x44=DDigital Equipment公司 0x69=Iintel公司 |
3124232216 15430 | ||||
由生产商确定 | A | 产品子编号 | 产品主编号 | 处理器版本号 |
位 | 说明 |
位[3: 0] | 生产商定义的处理器版本号 |
位[15: 4] | 生产商定义的产品主编号,其中最高4位即位[15:12]的值为0x7 |
位[22: 16] | 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等 |
位 | 说明 |
位[23] | ARM7支持下面两种ARM体系的版本号: 0x0ARM体系版本3 0x1ARM体系版本4T |
位[31: 24] | 生产厂商的编号,现在已经定义的有以下值: 0x41=AARM公司 0x44=DDigital Equipment公司 0x69=IIntel公司 |
312423221615430 | ||||
由生产商确定 | A | 产品子编号 | 产品主编号 | 处理器版本号 |
位 | 说明 |
位[3: 0] | 生产商定义的处理器版本号 |
位[15: 4] | 生产商定义的产品主编号,其中最高4位即为[15:12]的值为0x7 |
位[22: 16] | 生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等 |
位[23] | ARM7支持下面两种ARM体系的版本号: 0x0ARM体系版本3 0x1ARM体系版本4T |
位[31: 24] | 生产厂商的编号,现在已经定义的有以下值: 0x41=AARM公司 0x44=DDigital Equipment公司 0x69=Iintel公司 |
访问cache类型标识符寄存器的指令格式如下所示:
mrcp15, 0, r0, c0, c0, 1;将cache类型标识符寄存器C0,1的值读到r0中
ARM处理器中cache类型标识符寄存器的编码格式如下所示:
31292825242312110 | ||||
000 | 属性字段 | S | 数据cache相关属性 | 指令cache相关属性 |
位 | 说明 |
位[28: 25] | 指定控制字段位[24: 0]指定的属性之外的cache的其他属性,详见表4-2 |
位[24] | 定义系统中的数据cache和指令cache是分开的还是统一的: 0系统的数据cache和指令cache是统一的; 1系统的数据cache和指令cache是分开的 |
位[23: 12] | 定义数据cache的相关属性,如果位[24]为0,本字段定义整个cache的属性 |
位[31: 24] | 定义指令cache的相关属性,如果位[24]为0,本字段定义整个cache的属性 |
表4-2cache类型标识符寄存器的控制字段位[28:25]
编码 | cache类型 | cache内容清除方法 | cache内容锁定方法 |
ARM处理器CP15协处理器寄存 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)