以下内容摘自《步步惊芯——软核处理器内部设计分析》一书
OR1200中的寄存器分为两类:通用寄存器r0-r31、特殊寄存器。特殊寄存器又分为11组,在本书第1.3.3节简单地列出了所有的特殊寄存器组。从列表中可以发现除第0组外的其余特殊寄存器组都是与具体的硬件模块相关联的,比如:第2组特殊寄存器与指令MMU有关、第4组特殊寄存器与指令缓存ICache有关、第9组特殊寄存器与中断控制单元PIC有关。
OR1200有两种工作模式:用户模式、特权模式,在这两种模式下对特殊寄存器的访问权限不同,第0组特殊寄存器中的SR寄存器的SM位(即SR[SM])决定了OR1200当前处于何种模式,其值为1表示OR1200处于特权模式,其值为0表示OR1200处于用户模式。表5.1列出了每一组特殊寄存器中具体的寄存器,以及在两种模式下的访问权限。
有如下几点说明:
(1)其中的读写权限是OR1200手册中描述的,也是OpenRISC 1000架构所设计的,但在OR1200的实现中没有按照设计实现,比如在表5.1中有的特殊寄存器在用户模式下是不能读取的,在OR1200中并没有考虑到这一点,所有的特殊寄存器都可以在用户模式下读取。我们在分析SPRS模块的时候会发现这一点。