gpt4 book ai didi

linux-kernel - ARM 中的嵌套中断处理

转载 作者:行者123 更新时间:2023-12-01 05:12:44 26 4
gpt4 key购买 nike

下面是Cortex A Prog Guide中提到的流程,我对文中有几个问题。

因此,可重入中断处理程序必须在引发 IRQ 异常并以前面描​​述的方式将控制权转移到中断处理程序后采取以下步骤。

• 中断处理程序保存被中断程序的上下文(即,它将任何将被处理程序破坏的寄存器,包括返回地址和SPSR_IRQ 推送到替代内核模式堆栈上)。

Q> What is the alternative kernel mode stack here ?

• 确定需要处理哪个中断源,并在外部硬件中清除该源(防止它立即触发另一个中断)。

• 中断处理程序将处理器更改为其他内核模式,保留 CPSR I 位设置(中断仍被禁用)。
Q> From IRQ to SVC mode with CPSR.I =1 . Right ?

• 中断处理程序将异常返回地址保存在堆栈上(新模式的堆栈,位于内核内存中)并重新启用中断。
Q> Are there 2 stacks here ?

• 它为原始中断调用适当的 C 处理程序(中断仍被禁用)。

• 完成后,中断处理程序禁用IRQ 并从堆栈中弹出异常返回地址。

• 它直接从替代内核模式堆栈中恢复被中断程序的上下文。这包括恢复 PC,以及切换回先前执行模式的 CPSR。
Q> How is the nesting done here ? I am bit confused here...

最佳答案

1)取决于你,真的。要求是它不能被异步调用。因此,您可以使用与用户模式共享的系统模式堆栈 - 具有一些有趣的含义。或者您可以使用监督模式堆栈,只要您在执行 SVC 指令之前始终正确存储所有上下文即可。

2) 是的。

3)是的,您将上下文存储在(1)中选择的任何模式的堆栈上。

4)在替代模式下执行时,您重新启用中断(如您的文本所述)。此时,处理器现在将对向内核发出信号的新中断使用react——通常是中断 Controller 中配置的更高优先级的中断。

关于linux-kernel - ARM 中的嵌套中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com