适用于 ARMv8-A(及更高版本)的 QEMU:支持哪些 FPCR 控制位?

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

我正在尝试查找 ARMv8-A(及更高版本)的 QEMU 支持哪些 FPCR 控制位(例如 AHP、DN、FZ 等)。我已经尝试在 www.qemu.org 上搜索(例如)“FPCR”。然而,搜索没有匹配到任何文档。

有文档吗?或者我需要检查 QEMU 的源代码吗?

floating-point arm qemu armv8
1个回答
0
投票

一般来说,对于 Arm[*],您可以假设 QEMU 实现了架构所需的功能。如果功能是架构扩展的一部分,您可以查看模拟架构功能列表来查看 QEMU 是否实现了该功能。 (此列表会随着时间的推移而变化,因此如果您没有运行最新的 QEMU,您应该检查与您正在运行的版本相对应的文档。)来宾软件可以通过 ID 寄存器检查功能是否存在,就像在真实硬件上一样.

如果您对未实现的特定内容感到怀疑,那么不幸的是,您需要深入研究源代码或在邮件列表上询问以进行确认。

特别是对于 FPCR,我们应该正确实现架构和我们提供的架构扩展的所有架构所需的行为。 (一些 FPCR 位特定于架构扩展;例如,FPCR.FZ16 是我们实现的 FEAT_FP16 的一部分,但 FPCR.FIZ 是我们尚未实现的 FEAT_AFP 的一部分。因此,FPCR.FZ16 可以工作,假设您已要求 QEMU 使用 FEAT_FP16 模拟 CPU 类型,而 FPCR.FIZ 不会。)

QEMU 通常不会记录它在何处做出允许的实现定义的选择。 FPCR 的一个例子是,我们没有实现浮点异常的捕获,因此 IDE、IXE、UFE、OFE、DZE、IOE 位是 RAZ/WI。 (大多数硬件也不实现陷印。)

[*] 这对于其他一些架构来说不太适用,因为它取决于给定客户架构的开发活跃程度。

© www.soinside.com 2019 - 2024. All rights reserved.