이 값은 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()
는 CPU ID 비트 맵을 얻는다 코 프로세서 CP15하는 매크로이다.
fmrx()
은 다른 VFP 보조 프로세서 레지스터도 사용합니다. 따라서 사용중인 에뮬레이터가 보조 프로세서 레지스터의
MRC
명령어에 제대로 응답하지 않습니다. 또는
NEON
에뮬레이션을 지원하지 않을 수 있습니다.
귀하의 것보다 최신 버전이거나 귀하의 설정이 다르게 구성되어 있습니다. – auselen