在异常处理期间,Linux总是切换到监管模式。这是为什么呢?为什么它不能在异常模式下继续执行?
我可能有点晚回答这篇文章。
Linux内核的实现方式是这样的,每当第一级IRQ处理程序中发生任何中断,它会将IRQ寄存器复制到SVC寄存器,并将ARM切换到SVC模式。
这样做有两个主要目的:
对于IRQ模式,您仍需要一个堆栈,只是该堆栈非常小,因为我们基本上只需要在那里存储spsr和lr...但是是的,您是正确的,这将有助于支持嵌套中断,但这不是唯一的方法...我们可以从中断模式切换到系统模式(使用用户模式寄存器),仍然支持嵌套中断。