QEMu中的ARM NEON支持

时间:2013-03-24 11:46:17

标签: android-emulator arm qemu neon

Android SDK附带的Android模拟器支持NEON指令集模拟(我自己测试过)。 它基于QEMU。

我最近尝试使用QEMU创建自定义VM(模拟Cortex-A9)并安装了一些ARMEL Linux发行版。

但是,安装后/proc/cpuinfo未在CPU功能中显示neon。 实际上Android模拟器的功能是什么,所以NEON似乎可以在他们的VM中使用?

2 个答案:

答案 0 :(得分:2)

这些值存储在elf_hwcap中(请参阅kernel/setup.c)。 vfp/vfpmodule.c检测到NEON支持并在elf_hwcap中设置了一点。特别是通过这段代码,

            /*
             * Check for the presence of the Advanced SIMD
             * load/store instructions, integer and single
             * precision floating point operations. Only check
             * for NEON if the hardware has the MVFR registers.
             */
            if ((read_cpuid_id() & 0x000f0000) == 0x000f0000) {
#ifdef CONFIG_NEON
                    if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100)
                            elf_hwcap |= HWCAP_NEON;
#endif
#ifdef CONFIG_VFPv3
                    if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000)
                            elf_hwcap |= HWCAP_VFPv4;
#endif
            }

read_cpuid_id()是协处理器CP15的宏,它获取 cpu id 位图。 fmrx()还使用另一个VFP协处理器寄存器。因此,您使用的仿真器无法正确响应来自协处理器寄存器的MRC指令;或者它可能不支持NEON仿真。

答案 1 :(得分:0)

我遇到了同样的问题。您必须模拟具有霓虹灯支持的硬件。 beaglexm有支持。检查此here