Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104042
  • 博文数量: 30
  • 博客积分: 536
  • 博客等级: 中士
  • 技术积分: 224
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-29 09:23
文章分类
文章存档

2012年(16)

2011年(14)

我的朋友

分类: LINUX

2012-01-01 18:38:53

格式这样能更好的将表格展开。
访问CP15寄存器的指令
访问CP15寄存器指令的编码格式及语法说明如下:< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

31  28

27  24

23  21

20

19  16

15  12

11  8

7  5

4

3  0

cond

1 1 1 0

opcode_1

L

cr n

rd

1 1 1 1

opcode_2

1

crm

说明:
:协处理器行为操作码,对于CP15来说,永远为0b000,否则结果未知。
:不能是r15/pc,否则,结果未知。
:作为目标寄存器的协处理器寄存器,编号为C0~C15
:附加的目标寄存器或源操作数寄存器,如果不需要设置附加信息,将crm设置为c0,否则结果未知。
:提供附加信息比如寄存器的版本号或者访问类型,用于区分同一个编号的不同物理寄存器,可以省略或者将其设置为0,否则结果未知。

   

   

语法格式

mcr

ARM处理器的寄存器中的数据写到CP15中的寄存器中

mcr{} p15, , , , , {}

mrc

CP15中的寄存器中的数据读到ARM处理器的寄存器中

mcr{} p15, , , , , {}

< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />4.1.2  CP15寄存器介绍
CP15的寄存器列表如表4-1所示。
4-1  ARM处理器中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

因不同设计而异

因不同设计而异

因不同设计而异

·      CP15的寄存器C0
CP15中寄存器C0对应两个标识符寄存器,由访问CP15中的寄存器指令中的指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:

opcode_2编码

对应的标识符号寄存器

0b000

主标识符寄存器

0b001

cache类型标识符寄存器

其他

保留

1)主标识符寄存器
访问主标识符寄存器的指令格式如下所示:
mrc  p15, 0, r0, c0, c0, 0                
;将主标识符寄存器C0,0的值读到r0
ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。
ARM7
之后处理器的主标识符寄存器编码格式如下所示:

31             24      23            20      19              16    15              4     3               0

由生产商确定

产品子编号

ARM体系版本号

产品主编号

处理器版本号

 

   

[3: 0]

生产商定义的处理器版本号

[15: 4]

生产商定义的产品主编号,其中最高4位即位[15:12]可能的取值为0~7但不能是07

[19: 16]

ARM体系的版本号,可能的取值如下:
0x1   ARM
体系版本4
0x2   ARM
体系版本4T
0x3   ARM
体系版本5
0x4   ARM
体系版本5T
0x5   ARM
体系版本5TE
其他  ARM公司保留将来使用

[23: 20]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

[31: 24]

生产厂商的编号,现在已经定义的有以下值:
0x41  =A  ARM
公司
0x44  =D  Digital Equipment
公司
0x69  =I   intel
公司

ARM7处理器的主标识符寄存器编码格式如下所示:

31             24     23     22                        16           15          4         3          0

由生产商确定

A

产品子编号

产品主编号

处理器版本号

 

   

[3: 0]

生产商定义的处理器版本号

[15: 4]

生产商定义的产品主编号,其中最高4位即位[15:12]的值为0x7

[22: 16]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

续表 

   

[23]

ARM7支持下面两种ARM体系的版本号:
0x0   ARM
体系版本3
0x1   ARM
体系版本4T

[31: 24]

生产厂商的编号,现在已经定义的有以下值:
0x41  =A  ARM
公司
0x44  =D  Digital Equipment
公司
0x69  =I   Intel
公司

ARM7之前处理器的主标识符寄存器编码格式如下所示:

31           24       23       22                    16            15          4         3           0

由生产商确定

A

产品子编号

产品主编号

处理器版本号

 

   

[3: 0]

生产商定义的处理器版本号

[15: 4]

生产商定义的产品主编号,其中最高4位即为[15:12]的值为0x7

[22: 16]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

[23]

ARM7支持下面两种ARM体系的版本号:
0x0   ARM
体系版本3
0x1   ARM
体系版本4T

[31: 24]

生产厂商的编号,现在已经定义的有以下值:
0x41  =A  ARM
公司
0x44  =D  Digital Equipment
公司
0x69  =I   intel
公司

2cache类型标识符寄存器
访问cache类型标识符寄存器的指令格式如下所示:
mrc  p15, 0, r0, c0, c0, 1                 ;将cache类型标识符寄存器C0,1的值读到r0
ARM处理器中cache类型标识符寄存器的编码格式如下所示:

31             29     28           25    24       23             12               11            0

0   0   0

属性字段

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的属性

其中控制字段位[2825]的含义说明如下:
4-2  cache类型标识符寄存器的控制字段位[2825]

   

cache类型

cache内容清除方法

cache内容锁定方法

0b0000

写通类型

不需要内容清除

不支持内容锁定

0b0001

写回类型

数据块读取

不支持内容锁定

0b0010

写回类型

由寄存器C7定义

不支持内容锁定

0b0110

写回类型

由寄存器C7定义

支持格式A

0b0111

写回类型

由寄存器C7定义

支持格式B

控制字段位[2312]和控制字段位[110]的编码格式相同,含义如下所示:

11      9         8             6         5          3                2            1               0

0    0    0

cache容量

cache相联特性

M

块大小

cache容量字段bits[8: 6]的含义如下所示:

    

M=0时含义(单位KB

M=1时含义(单位KB

0b000

0.5

0.75

0b001

1

1.5

0b010

2

3

0b011

4

6

0b100

8

12

0b101

16

24

0b110

32

48

0b111

64

96

cache相联特性字段bits[5: 3]的含义如下所示:

   

M=0时含义

M=1时含义

0b000

1路相联(直接映射)

没有cache

0b001

2路相联

3路相联

0b010

4路相联

6路相联

0b011

8路相联

12路相联

0b100

16路相联

24路相联

0b101

32路相联

48路相联

0b110

64路相联

96路相联

0b111

128路相联

192路相联

cache块大小字段bits[1: 0]的含义如下所示:

   

cache块大小

0b00

2个字(8字节)

0b01

4个字(16字节)

0b10

8个字(32字节)

0b11

16个字(64字节)

阅读(893) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~