https://mp.weixin.qq.com/s/S-XnHDaAFd_R2Ksi019itg
简单介绍Linux kernel中riscv架构中irq相关的内容。
1. setup_trap_vector
在主初始化流程中,调用了setup_trap_vector初始化中断向量表:
setup_trap_vector的定义如下:
其中:
a. 把handle_exception的地址填入mtvec寄存器,作为中断向量表的基地址;handle_exception在entry.S中定义,其定义如下:
因为.balign 4的作用,handle_exception地址的低2位为0:
所以mode=Direct,即All exceptions set pc to BASE。也就是handle_exception处理所有的异常。
b. 把mscrach寄存器置0,以向中断向量表明中断发生时,处于内核空间;
2. handle_arch_irq
handle_arch_irq是一个变量,其中存放了中断处理程序的地址:
-----------------------------------------------------------------------------
这是一篇付费文章,请移步付费阅读全文,谢谢!
文章链接:https://mp.weixin.qq.com/s/S-XnHDaAFd_R2Ksi019itg