在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 跳转到另一个 EL 吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)