Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49619
  • 博文数量: 10
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-19 21:29
文章分类

全部博文(10)

文章存档

2010年(1)

2009年(5)

2008年(4)

我的朋友

分类:

2009-01-03 12:37:47

本文讲述了MIPS64架构所支持的几种工作模式,内容来源自MIPS64架构手册第三卷。

MIPS64 PRA需要两种工作模式:用户模式与内核模式。PRA还支持两种额外模式:超级用户模式和EJTAG调试模式。


四种工作模式

调试模式:当CP0 Debug寄存器的DM位为1时,处理器工作在调试模式,可以访问所有资源。


内核模式:当Debug寄存器DM位为0,并且满足下面任一条件。

  1. CP0 Status寄存器的KSU0b00

  2. Status寄存器的EXL1

  3. Status寄存器的ERL1

处理器上电时进入内核模式,在中断,异常或错误的情况下也进入内核模式。当上面三个条件均不成立时,处理器返回用户模式或者超级用户模式,一般通过eret指令。


超级用户模式:当满足下面所有条件时,工作在超级用户模式

  1. Debug寄存器的DM0

  2. Status寄存器的KSU0b01

  3. Status寄存器的EXLERL均为0


用户模式:当满足下面所有条件时,工作在用户模式

  1. Debug[DM] = 0

  2. Status[KSU] = 0b10

  3. Status[EXL]Status[ERL]均为0


其它模式


使能64位地址:

  • Status[KX]=1时,可以访问内核64位地址空间

  • Status[SX]=1时,可以访问超级用户64位地址空间

  • Status[UX]=1时,可以访问用户64位地址空间

处理器的工作模式与64位地址使能与否无关。比如,处理器工作在内核模式下,访问用户空间地址由UX控制,而非KX

如果试图访问没有使能的64位地址空间,将引起地址错误异常(Address Error Exception, AdEL或者AdES)

TLB未命中时,异常向量由64位地址使能决定。如果64位地址未使能,使用TLB Refill Vector,如果使能了,则使用XTLB Refill Vector


使能64位操作:下列任一条件满足即可

  • 处理器工作在内核模式,超级用户模式或者调试模式下

  • Status[PX]=1

  • 处理器工作在用户模式下,Status[UX]=1

后两条表明,PX1或者UX1,用户模式中进行64位操作都是可以的。

当未使能而执行64位操作时,将引发Reserved Instruction Exception


64位浮点操作使能:下列任一条件满足

Release1实现下,只有64位操作使能,64位浮点操作才被使能

Release2实现下,如果FIRF64位为1,则使能。


64FPR使能

访问64FPRsStatus[FR]控制,如果FR1FPRs解释为3264位寄存器,若FR0FPRs解释为3232位寄存器,此时64位数据按奇偶寄存器对存储。


协处理器0使能:满足下列任一条件

  • 处理器工作在内核模式或调试模式下

  • Status[CU0]1

CU0位是控制用户模式,超级用户模式访问CP0的权限的。

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