【ARM】中断的处理
ARM的异常向量表
- 如果发生异常后并没有exception level切换,并且发生异常之
前使用的栈指针是SP_EL0,那么使用第一组异常向量表。 - 如果发生异常后并没有exception level切换,并且发生异常之
前使用的栈指针是SP_EL1/2/3,那么使用第二组异常向量表。 - 如果发生异常导致了exception level切换,并且发生异常之前
的exception level运行在AARCH64模式,那么使用第三组异常
向量表。 - 如果发生异常导致了exception level切换,并且发生异常之前
的exception level运行在AARCH32模式,那么使用第四组异常
向量表。
Linux Kernel的中断处理
Linux Kernel中的异常向量表的实现
在设置异常向量表基地址时填的虚拟地址
Linux kernel对中断的处理
ATF(TF-A)的中断处理
ATF(TF-A)中的中断向量表
BL31 runtime_exceptions
程序在EL3时来一个IRQ中断target到EL3来实现时,是不支持的,因为是没有实现的。
程序在EL3一下时来一个中断,此时是支持的,直接target到EL3。
optee的中断处理
optee os中异常向量表的实现
第二组不用
做了两件事
1,写了一个异常向量表
2,把异常向量表的基地址写入VBAR_EL1寄存器中
optee os中对中断的处理
optee中中断的使用示例
写一个结构体声明一下,调用itr_add和itr_enable,当中断一来,就会自动调用中断处理函数