FP exceptions on Raspberry Pi
daniel at turtleware.eu
Tue Dec 31 08:11:54 UTC 2019
Dave Richards writes:
> It appears that the VFP unit on the Raspberry Pi does not generate FPU
> exceptions. Therefore, no SIGFPE is generated and cannot be handled by ECL.
> This causes numerous 'make check' test failures. I am working on a patch.
> I am not very familiar with the ECL C environment so I am sure the patch
> will need some help. The approach is as follows:
> 1. There is no value in registering a SIGFPE handler. For the ARM I will
> just not register the handler at all.
If you are interested in how handler works please take a look at file
src/c/unixint.d (most notably install_fpe_handler). That said the option
you look for is ECL_OPT_TRAP_SIGFPE (src/c/main.d). That said there is
no harm with leaving it at its default value, if sigfpe is not signaled
then the handler will simply not be called.
> 2. I will created an arch/fpe_arm.c file. I will re-define the macro to
> read the FPSCR register and check for exception bits being set. If any are
> I will call a C function that will disambiguate which exception to map to a
> condition and signal the condition.
please see files:
- c/arch/fpe_*.c for software ecl_detect_fpe() definitions
- c/number.d for a definition of DO_DETECT_FPE()
calls to floating point operations are always detected in the float
number constructors (if software fpe handling is used). They are
signalled with ecl_deliver_fpe.
> 3. I was planning on creating a static inline function for this purpose
> right inside fpe_arm.c but if it should go somewhere else I'd be happy to
> put it there. The inline thing is just an excuse for sticking in the
> fpe_arm.c file. In reality it's probably better to make a C function call
> to do the heavy lifting rather than making each FPE check pay for it.
If you need a file then fpe_/arch/.c is the right place to put
it. Preferably this file is self-contained (static function definition).
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański | www.turtleware.eu
"Be the change that you wish to see in the world." - Mahatma Gandhi
More information about the ecl-devel