linux移植日记-day5-中断向量表基地址的选择
由CP0的status寄存器的BEV位(1 bit)来决定中断向量入口的基地址。

  • BEV = 1 :意味着"Bootstrap",以0xbfc00200为基地址
  • BEV = 0 :意味着"Normal",以0x80000000为基地址

然后结合status寄存器的EXL(0 normal level ; 1 exception level),与相应的中断号来选择中断向量入口的偏移量。如上图,INT类型的中断在cause.IV = 1(IV 1 表示使用特殊中断向量偏移 0x200;为 0 表示使用普通中断向量偏移0x180)且status.EXL = 0,status.BEV =1时的中断向量入口地址为:
0x200 + 0xbfc00200 = 0xbfc00400

中断向量入口地址中断类型(一个中断码可能对应多个中断类型,如TLBL中断可能来自TLB miss,也可能来自TLB invalid),CP0相关寄存器状态共同决定,而不仅仅是简单的0xbfc00380。

相关文章: