从 EL0 A32 移动到 EL1 A64 导致 Arm Cortex a55 出错

问题描述 投票:0回答:0

目前我正在研究 Armv8 上的 Cortex a55 多核。 该系统在 EL3h 中是默认的。 我正在尝试从 EL3h -> EL1h -> EL0 svc A32 -> 切换回 EL1h。

从 El3 到 El1 的切换按预期工作。然而,下一次从 El1 A64 到 EL0 A32 的切换并不成功。

对于从 El3 到 El1 a64 的切换,我正在设置 SCR_EL3.RW 位。 HCR_EL2.RW 位在这里似乎没有任何作用。 切换到 EL1 成功,我能够执行所有功能。 当我尝试通过更改 SPSR_EL1 模式并使用 ERET 来切换到 EL0 A32 时,它不起作用。 CPSR.IL 位设置为 1,表明异常返回是非法的。

当我直接从 EL3h a64 切换到 El0 a32 时,将 Scr_el3.rw 位保持为 0,切换正常并且可以访问 a32 svc。但是来自 a32 的 Svc 指令不会跳回到 el1 a64。它留在 a32.

我的主要目标是在 a64 中有 EL1,在 a32 中有 El0。并能够在需要时切换模式。

exception arm 32bit-64bit arm64 cortex-a
© www.soinside.com 2019 - 2024. All rights reserved.