Coldfile and Floating Point Context

Till Straumann strauman at
Mon Mar 16 15:42:46 UTC 2009

Sebastian Huber wrote:
> Hi,
> I have problems with an initialization task with enabled floating point (which
> is needed for the global C++ constructors).  The call to
> _CPU_Context_restore_fp results in an exception because it tries to execute a
> floating point instruction with DF set in the CACR register (= disabled
> floating point).  Why is the floating point unit not enabled in the
> restore/save FP routines?  On the PowerPC platform the FP unit will be enabled
> during a restore/save 
and only during the save/restore, i.e., the algorithm is

if ( ! (wasOn = fpuIsEnabled()) ) {

/* save/restore FP regs */

if ( ! wasOn ) {

to make sure the actual on/off state of the FPU
after execution is the same as before.

> since a FP context switch may occur in an ISR or
> exception handler when the FPU is not available.  Is this different on the
> ColdFire?  Where is the right place to enable the FP unit?
> Have a nice day!

More information about the users mailing list