qemu-system-aarch64 模拟 a53 开机时进入 el1

Les*_* Li 5 arm qemu arm64

我已经下载了最新的 qemu Windows 版本,然后在下面运行

qemu-system-aarch64 -M virt,gic_version=3 -cpu cortex-a53 -smp 2 -nographic 
-m 2048 -kernel mybaremetal.axf -s -S
Run Code Online (Sandbox Code Playgroud)

为了模拟双核 cortex-a53,我可以使用 aarch64 gdb 客户端连接到它,在 mybaremetal.axf 的入口处,我通过以下方式检查了执行的异常级别:

mrs x1, CurrentEL
Run Code Online (Sandbox Code Playgroud)

我总是在 x1 中得到值 4,但这里预期值 0xc,如 ARM 文档中所示,它说:在加电和复位时,处理器进入 EL3

有人知道原因吗?

Pet*_*ell 6

默认情况下,QEMU 的 Cortex-A53 仿真仅仿真具有 EL1 的 CPU,而不是 EL2 或 EL3,因此(根据架构要求)我们在 EL1 中启动。如果您想要具有 EL2 或 EL3 的 CPU,则需要在命令行上专门启用它,使用 -machine virtualization=on 启用 EL2,使用 -machine secure=on 启用 EL3。请注意,EL2 支持是最近才提供的,目前您需要从上游 git master 进行构建才能获得该支持(它将出现在即将发布的 QEMU 2.9.0 版本中)。