首页 > 解决方案 > 在armv8中无一例外突然出现在EL2中

问题描述

armv8 内核开发的新手,我发现执行级别之间有一些奇怪的跳转。目前在 qemu 上开发,这是我在说的奇怪的事情:

Exception return from AArch64 EL2 to AArch64 EL1 PC 0x8004c
Taking exception 5 [IRQ]
...from EL1 to EL1
...with ESR 0x0/0x0
...with ELR 0x81fa8
...to EL1 PC 0x81280 PSTATE 0x3c5
Exception return from AArch64 EL1 to AArch64 EL1 PC 0x83380
Taking exception 5 [IRQ]
...from EL1 to EL1
...with ESR 0x0/0x0
...with ELR 0x81fa0
...to EL1 PC 0x81280 PSTATE 0x3c5
Taking exception 3 [Prefetch Abort]
...from EL2 to EL2
...with ESR 0x21/0x86000010
...with FAR 0x400000000
...with ELR 0x400000000
...to EL2 PC 0x200 PSTATE 0x3c9

可以看出两个中断请求到达 CPU,第一个被正确处理(如显示异常返回...),第二个显然不执行 eret 指令,并且以某种方式从 EL2 到 EL2 发生异常.

这让我想……除了例外,还有其他方法可以从一个 EL 跳转到另一个吗?

标签: exceptionkernelarmv8

解决方案


推荐阅读