MIPS 74K Core 的异常和中断

    异常

    74k内核处理各种的异常,包括计算溢出,TLB缺失,IO口的中断和系统调用。当CPU接收到一个中断,通常的处理过程是,挂起现有的指令,并且进入kernel模式,禁止中断,并把产生异常时,运行到的指令的地址保存到EPC上去(便以以后异常返回),之后就是跳到中断handler上去了。

    这个handler首先保存了cpu的上下文,包括pc,当前的操作模式,还有中断的状态(允许还是禁止)。

    异常包括了精确的和非精确的异常,精确的异常时需要保存返回地址到EPC的(一些可处理和恢复的异常,如TLB缺失,IO中断等等)。非精确异常就是不需要返回的(如总线错误,CP2异常等等)。

   

    中断

    MIPS32版本1支持两个软件中断,6个硬件中断,还有一个特殊用途的时钟中断。时钟中断是作为外部中断提供给内核用的,使用的是硬件中断号5,这个时钟中断一般作为操作系统的tick。

    中断可以被general exception vector(offset 0x180)或者special interrupt vector (0x200)中断向量处理,至于使用哪一个,通过CauseIV来决定,软件可以通过判断这个位来区分。

    另外在74K内核中,还有一个性能计数器,这个计数器可以被配置成产生多种事件,当这个计数器的MSB字段被置位时,这个计数器会产生一个类似timer的中断。可以给操作系统提供时钟tick等。

    中断模式

    74K内核支持3种中断模式MIPS32版本2定义:

    1。兼容中断模式(Interrupt Compatibility mode),和版本1的中断模式兼容

    2。向量中断模式(Vectored Interrupt (VI) mode),新增加的一种模式,为了提高性能。这种中断模式分配了一个GPR的 shadow set来提高中断处理的性能,

          可以通过读取Config3寄存器的VInt位来判断是否支持这种模式。

    3。外部中断控制器模式(External Interrupt Controller (EIC) mode),这种方式重新定义了中断处理方式,为优先中断处理和向量中断处理提供了充分的支持。就好像VI模式,这种模式也是特定体系结构才有的,如74K,Config3寄存器的VEIC位标记是否支持这样模式。对于74K内核,如果有外部的SI_EICP信号,VEIC会被置位,告诉内核有一个扩展的中断控制器存在。

int

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值