これらの値はに保存されますelf_hwcap
(kernel / setup.cを参照)。vfp / vfpmodule.cNEON
はサポートを検出し、にビットを設定します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
}
これは、 CPUIDビットマップread_cpuid_id()
を取得するコプロセッサーCP15のマクロです。また、別のVFPコプロセッサレジスタを使用します。そのため、使用しているエミュレーターは、どちらのコプロセッサー・レジスターからの命令にも正しく応答していません。または多分それはエミュレーションをサポートしていません。fmrx()
MRC
NEON