riscv

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

原文地址:https://www.cnblogs.com/wjcdx/p/15244587.html