Using VFP registers in the msun fenv functions

Andrew Turner andrew at fubar.geek.nz
Mon Jan 13 22:19:05 UTC 2014


On Mon, 13 Jan 2014 14:34:28 -0700
Warner Losh <imp at bsdimp.com> wrote:

> Hi Andrew,
> 
> Thanks for tackling this...
> 
> On Jan 12, 2014, at 12:45 PM, Andrew Turner wrote:
> > [1] http://people.freebsd.org/~andrew/armv6fenv2.diff
> 
> I noticed several constructs like
> 
> +int feclearexcept(int __excepts)
> +{
> +
> +	if (_libc_arm_fpu_present)
> +		__vfp_feclearexcept(__excepts);
> +	__softfp_feclearexcept(__excepts);
> +
> +	return (0);
> +}
> 
> where you do the softfp thing unconditionally. Why is that, and is it
> intentional?

As this is for the soft-float ABI we still use the softfloat code.
Because of this there are a number of places where we still need to
call into the softfloat version of these functions. i.e. just because
_libc_arm_fpu_present is set there is no guarantee we will use the VFP
unit in any helper functions.

Andrew


More information about the freebsd-arm mailing list