首先让我们带着问题进入到armv8架构的学习中。linux中断代码分为两部分entry.S @arch\arm64\kernel\entry.S汇编部分和C代码后续处理。汇编代码中处理最为低级的部分,设置硬件中断向量表,保持当前上下文,切换中断堆栈等任务,这是就如我们嵌入式系统看到那样。

@arch\arm64\kernel\entry.S中对于中断向量表(vectors)的定义如下:

从零开始理解Linux中断架构(3)--Armv8体系架构-LMLPHP

初看这张表,会有很多的疑问:

  1. 系统在什么状态下,会触发el1_irq,el0_irq这些中断函数?
  2. EL0,EL1是什么?
  3. IRQ 32-bit EL0具有代表什么?
  4. EL1H,EL1t?

        一开始我也是看不懂这些代表什么,如果要彻底理解这张表,需要知道一点点ARMV8系统架构中的一些

06-16 02:59