【发布时间】:2014-03-02 10:42:05
【问题描述】:
背景: 在 AArch32 上,每种模式(FIQ、IRQ 等)都有一个 SP(R13)寄存器的“存储”副本。这允许不同的模式维护自己的独立堆栈。
现在在 AArch64 上似乎并非如此。例如:如果我们考虑 EL1,在 AArch64 上,相当于 IRQ 和 SVC 的两种模式是 EL1'h' 和 EL1't'(h = 处理程序和 t = 线程)。在这种情况下,“h”和“t”模式是否必须共享一个公共堆栈?我问是因为每个 EL 只有一个堆栈指针,即 SP_ELx。
问题:
- AArch64 如何为 Linux 等操作系统管理这种差异。将 EL1'h' 和 EL1't' 两种模式,共享同一个栈?
- 类似于 AArch32,其中 Linux 具有不同的 IRQ 和 SVC 堆栈 模式,必须做些什么来维护不同的堆栈 EL1'h' 和 EL1't',在 AArch64 的情况下?
【问题讨论】:
标签: kernel arm computer-architecture armv7 arm64