Module Name: src Committed By: matt Date: Sat Dec 14 15:47:18 UTC 2013
Modified Files: src/sys/arch/arm/vfp: vfp_init.c Log Message: If we can't enable VFP/VFP2 via the CPACCESS register, bail since there isn't a VFP. To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/sys/arch/arm/vfp/vfp_init.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/vfp/vfp_init.c diff -u src/sys/arch/arm/vfp/vfp_init.c:1.27 src/sys/arch/arm/vfp/vfp_init.c:1.28 --- src/sys/arch/arm/vfp/vfp_init.c:1.27 Mon Nov 18 18:02:01 2013 +++ src/sys/arch/arm/vfp/vfp_init.c Sat Dec 14 15:47:18 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: vfp_init.c,v 1.27 2013/11/18 18:02:01 matt Exp $ */ +/* $NetBSD: vfp_init.c,v 1.28 2013/12/14 15:47:18 matt Exp $ */ /* * Copyright (c) 2008 ARM Ltd @@ -261,7 +261,6 @@ vfp_attach(void) { struct cpu_info * const ci = curcpu(); const char *model = NULL; - bool vfp_p = false; if (CPU_ID_ARM11_P(curcpu()->ci_arm_cpuid) || CPU_ID_CORTEX_P(curcpu()->ci_arm_cpuid)) { @@ -289,8 +288,14 @@ vfp_attach(void) * If we could enable them, then they exist. */ cpacr = armreg_cpacr_read(); - vfp_p = __SHIFTOUT(cpacr, cpacr_vfp2) != CPACR_NOACCESS + bool vfp_p = __SHIFTOUT(cpacr, cpacr_vfp2) != CPACR_NOACCESS || __SHIFTOUT(cpacr, cpacr_vfp) != CPACR_NOACCESS; + if (!vfp_p) { + aprint_normal_dev(ci->ci_dev, "No VFP detected\n"); + install_coproc_handler(VFP_COPROC, vfp_fpscr_handler); + ci->ci_vfp_id = 0; + return; + } } void *uh = install_coproc_handler(VFP_COPROC, vfp_test);