riscv - kernel - irq

https://mp.weixin.qq.com/s/S-XnHDaAFd_R2Ksi019itg

 

简单介绍Linux kernel中riscv架构中irq相关的内容。

riscv - kernel - irq

 

1. setup_trap_vector

 

在主初始化流程中,调用了setup_trap_vector初始化中断向量表:

riscv - kernel - irq

 

setup_trap_vector的定义如下:

riscv - kernel - irq

其中:

a. 把handle_exception的地址填入mtvec寄存器,作为中断向量表的基地址;handle_exception在entry.S中定义,其定义如下:

riscv - kernel - irq

因为.balign 4的作用,handle_exception地址的低2位为0:

riscv - kernel - irq

所以mode=Direct,即All exceptions set pc to BASE。也就是handle_exception处理所有的异常。

b. 把mscrach寄存器置0,以向中断向量表明中断发生时,处于内核空间;

 

2. handle_arch_irq

 

handle_arch_irq是一个变量,其中存放了中断处理程序的地址:

riscv - kernel - irq

 

-----------------------------------------------------------------------------
这是一篇付费文章,请移步付费阅读全文,谢谢!
文章链接:https://mp.weixin.qq.com/s/S-XnHDaAFd_R2Ksi019itg

上一篇:【Rust】生存期-函数


下一篇:22 Babel优化