zoukankan      html  css  js  c++  java
  • 龙芯中断系统

    龙芯中断系统与x86中断系统完全不一样的。

    CPU级中断(异常)支持

    几个相关的寄存器有
    SR (BEV, SR, NMI, IM7-0, ERL, EXL, IE)
    Cause (IP7-0)

    龙芯有6个硬件中断信号线,分别对应Cause寄存器的15~10(IP7~IP2)位,龙芯片上时钟(定时器)占用了最高位那一根信号线,即Cause中的IP7。

    龙芯还有两个软件中断寄存器位,对应Cause的9~8(IP1~0)位,它们是可读可写的。

    当外部一个中断信号来到的时候,首先影响的就是Cause寄存器中IP位,信号从哪根线进入就会把对应的IP7~IP2中的那个位置1。Cause的任何一个IP位被置1,就能够引发一个CPU异常,但是要实在地引发CPU异常,还需要通过SR状态寄存器中的某几个关卡。要使一个传入的中断信号一定能引发一个中断,需要对SR中的以下几个位做如下操作:

    • SR(IE 0位) 位必须置1, 否则会束缚CPU不响应任何中断,所以这位的名字叫全局中断全能位;
    • SR(EXL 1位) 和 SR(ERL 2位) 两位必须清零。如果它俩中的任何一位为1, 则会禁止任何中断。而且每一次中断(CPU异常)成功触发后,它们中的某一个会自动置1,所以要注意在一个异常结束前,要将这两位都清零一下;
    • 在SR状态寄存器中,还要8位掩码位 IM7~0(15位~8位),它们分别对应Cause中的那8位IP位(IP7~0),要想使某个IP位成功引发一个CPU异常,则那个IP位对应的IM位必须置1(表示掩码开)。相当于在这里又设置了一道关卡。由于8个通道有8个掩码,可以实现精确独立的信号响应控制,而这种控制是由软件在程序中实施的,所以给了程序员很大的方便。
  • 相关阅读:
    执行shell脚本的四种方式(转)
    linux free命令详解(一)
    linux TOP命令各参数详解【转载】
    grep命令
    vim常用命令
    IntelliJ Idea注释模板--类注释、方法注释
    [Chrome]抓请求直接生成可执行代码
    记录Markdown工具Typora
    VSCODE 配置远程开发环境
    [Boost::Polygon]多边形相减得到新的多边形序列
  • 原文地址:https://www.cnblogs.com/kuainiao/p/2859833.html
Copyright © 2011-2022 走看看