VBAR_EL 寄存器是否通过 ARM 中的上下文切换保存?

Are the VBAR_EL registers saved over context switch in ARM?

有人曾告诉我 VBAR_EL0/1 寄存器不会在上下文切换时备份。我还注意到 VBAR_EL0/1 寄存器未列出 here,但除此之外我找不到太多关于它的信息。这是否意味着对于所有 32 位进程,异常 table 必须位于同一位置?另外,在 32 位和 64 位处理器模式之间切换时,这是如何工作的?

我正在使用 Linux 为 Armv8 交叉编译的 4.1。

关于上下文切换的第一个问题,我没有找到任何现有参考,但我的个人经验是所有进程共享相同的异常向量 table 除非您手动更新 VBAR_EL0/1 寄存器。 如果您成功更新寄存器,那么所有进程都会根据新寄存器的值找到异常处理程序。

第二个问题:

how does this work when switching between 32 and 64 bit processor modes?

根据 ARM Architecture Reference Manual:

VBAR_EL1[31:0] is architecturally mapped to AArch32 System register VBAR.