后面数字是为了了测试vfp段代码做的打印。vfp段代码正常执行完成- pr_info("VFP support v0.3: ");
- // printk("printktest674!!!!!!!!!!!!!!!\n");
- if (VFP_arch)
- pr_cont("not present\n");
- else if (vfpsid & FPSID_NODOUBLE) {
- //printk("printktest678!!!!!!!!!!!!!!!\n");
- pr_cont("no double precision support\n");
- } else {
- hotcpu_notifier(vfp_hotplug, 0);
- // printk("ifelsetest!!!!681!!!!!!!!!!!!!!!\n");
- VFP_arch = (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT; /* Extract the architecture version */
- //printk("683!!!!!!!!!!!!!!!\n");
- pr_cont("implementor %02x architecture %d part %02x variant %x rev %x\n",
- (vfpsid & FPSID_IMPLEMENTER_MASK) >> FPSID_IMPLEMENTER_BIT,
- (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT,
- (vfpsid & FPSID_PART_MASK) >> FPSID_PART_BIT,
- (vfpsid & FPSID_VARIANT_MASK) >> FPSID_VARIANT_BIT,
- (vfpsid & FPSID_REV_MASK) >> FPSID_REV_BIT);
- // printk("689!!!!!!!!!!!!!!!\n");
- vfp_vector = vfp_support_entry;
- //printk("692!!!!!!!!!!!!!!!\n");
- thread_register_notifier(&vfp_notifier_block);
- vfp_pm_init();
- pr_info("695!!!!!!!!!!!!!!!!\n");
- /*
- * We detected VFP, and the support code is
- * in place; report VFP support to userspace.
- */
- elf_hwcap |= HWCAP_VFP;
- #ifdef CONFIG_VFPv3
- pr_info("703!!!!!!!!!!!!!!!!\n");
- if (VFP_arch >= 2) {
- //pr_info("703!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_VFPv3;
- //printk("705!!!!!!!!!!!!!!!\n");
- /*
- * Check for VFPv3 D16 and VFPv4 D16. CPUs in
- * this configuration only have 16 x 64bit
- * registers.
- */
- if (((fmrx(MVFR0) & MVFR0_A_SIMD_MASK)) == 1)
- //pr_info("712!!!!!!!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_VFPv3D16; /* also v4-D16 */
- else
- //pr_info("715!!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_VFPD32;
- else
- //pr_info("715!!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_VFPD32;
- }
- #endif
- /*
- * 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) {
- //printk("726!!!!1!!!!!!!!!!!!!!!\n");
- #ifdef CONFIG_NEON
- pr_info("731!!!!!!!!!!!!!!!!\n");
- if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100)
- //printk("729!!!!!!1!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_NEON;
- #endif
- #ifdef CONFIG_VFPv3
- pr_info("738!!!!!!!!!!!!!!!!\n");
- if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000)
- //printk("vfp end!!!!!!!!!!!!!!!\n");
- elf_hwcap |= HWCAP_VFPv4;
- pr_info("739!!!!!!!!!!!!!!!!\n");
- #endif
- }
- }
- pr_info("740!!!!!!!!!!!!!!!\n");// printk("vfp end!!!!!!!!!!!!!!!\n");
- return 0;
- }
- late_initcall(vfp_init);
-
|