分类: 嵌入式
2012-05-19 21:39:55
MSR(Machine State Register)寄存器用来设置E500内核的当前使用状态。这个寄存器基本上是初始化E500时第一个被配置的寄存器。该寄存器在E500内核中非常重要。MSR寄存器属于SLR寄存器组,但是mtspr和mfspr指令不能访问该寄存器,E500内核使用专门的指令mtmsr和mfmsr指令对MSR寄存器进行访问。修改MSR的PR位可以进行用户模式与超级用户模式的切换。当PowerPC处理器运行在用户模式时,MSR寄存器的PR位为1。下面介绍其他位。
UCLE(User-mode Cache Lock Enable,第37位)。该位为1时,程序运行在PowerPC处理器用户模式时,也可以锁定Cache行。
SPE(SPE Enable,第38位)。该位位1时,使能E500内核的SPE部件。
WE(Wait State Enable,第45位)。该位与HID0寄存器的DOZE,NAP和SLEEP位联合使用可以设置E500内核进入等待模式。
CE(Critical Enable,第46位),ME(Machine Check Enable,第51位),DE(Debug Interrupt Enable,第54位)位用来使能或关闭Critical异常、Machine Check异常和调试中断。
EE(External Enable,第48位)。此位为1时,将使能外部中断,位0时屏蔽外部中断。当处理器进入外部中断处理时会自动关闭此位,屏蔽外部中断,以防止中断嵌套。支持中断重入的驱动程序需要在程序中重新使能此位。许多操作系统需要频繁的改动EE位。为此,E500内核专门设置了wrtee和wrteei指令对MSR寄存器的EE位进行修改。
IS,DS(第58,59位)。E500内核支持两个地址空间,分别为地址空间0和地址空间1。IS位为1表示当前程序使用指令空间1;IS位为0表示当前程序使用指令空间0;DS位为1表示当前程序使用数据空间1;DS位为0表示当前程序使用数据空间0。
E500内核的内存管理与其他PowerPC内核有较大的差别,它不能关闭虚实地址转换功能。而许多PowerPC内核,如603E内核中可以关闭虚实地址转换功能,在603E中,IR和DR位与E500内核的IS和DS两位相对应。但是在603E内核中IR,DR位用来使能和禁止地址与数据空间的虚实地址转换。
MSR寄存器还有一些其他位,这些位的详细描述见E500内核的参考手册。