Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Are there known issues with earmhf?



On Jul 31, 2013, at 10:32 AM, Dennis Ferguson 
<dennis.c.ferguson%gmail.com@localhost> wrote:

> I was interested in using earmhf on the am335x processor since it
> makes a measurable difference (with Linux) for the application I'm
> trying to support and it is easy to pick an abi up front but harder
> to change one's mind later.  What I've found is that while the system
> builds just fine this way, and the kernel boots, applications which
> use floating point misbehave.  For a minimal example (it uses floating
> point only to handle time intervals), `ping xxx` or `ping -i 1 xxx`
> sends packets just as fast as it possibly can while `ping -i 2 xxx` sends
> a single packet and then waits forever.

I wonder if something still think they are softfloat.  BTW, for earm I've
fixed libc_vfp.so to adhere to the RTABI standard so it should work.

export LD_PRELOAD=/usr/lib/libc_vfp.so.0 or use /etc/ld.so.conf to do it
automatically.

> While I've looked at this briefly enough to only make a guess, it appears
> that floating point arithmetic done entirely within the application works
> okay, as do varargs function like printf(), but some other library function
> calls involving floating point values may be misbehaving.
> 
> Beyond this I'm not sure where to look.  Is this a known issue with earmhf
> and, if so, is it known what needs to be looked at?  Is there an interesting
> place to look for code that is handling floating point function arguments
> and that may have built-in knowledge of the abi (e.g. assembly code)?

There isn't really any assembly code that deals with floating point
except for setjmp/longjmp and getcontext/setcontext.

It might be useful to use an earm userland and then use an earmhf chroot
tree and see if the program happens if more than 1 program uses FP as a time.

I think the kernel lazy FP switching code is right but I haven't really
tested it.


Home | Main Index | Thread Index | Old Index