exception - 在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 跳转到另一个吗?
解决方案
推荐阅读
- scala - 如何在运行时使用 ScalaPB 在 Spark 上一般解压缩 google.protobuf.Any?
- firebase - 如何在 react native expo cli 功能组件中使用 AsyncStorage
- laravel - 如何在唯一注册 URL 示例中使用 SignedRoute
- python - 如何编写将标签转换为秒的函数?
- javascript - 使用 react 渲染书架
- android - Jetpack Compose - 我的 Text() 中的版式自定义不受影响
- javascript - 将对象数组聚合成一个对象
- android - handshakeexception 客户端中的握手错误(os error wrong_version_number tls_record cc 242) Flutter 应用程序/节点服务器
- javascript - TypeError:a.preventDefault 不是函数
- git - git lab cicd 文件的内容只是做一个简单的拉