SPARC fp_disabled exception
Jerry Needell
jerry.needell at unh.edu
Wed Aug 6 12:14:09 UTC 2008
I have run into an interesting situation that I wonder if others have
dealt with. I am running RTEMS on a LEON3 (SPARC -v8) processor with
an FPU. I am using RTEMS 4.8 and gcc 4.2.1.
The floating point operations of my application are limited to a few
tasks and I create those using RTEMS_FLOATING_POINT. Other tasks that
do not need floating point support are created with
RTEMS_NO_FLOATING_POINT. I have been developing and running this
application for a few months and this approach has been working well.
I recently added a significant amount of code to one of the non-
floating-point tasks and started seeing "fp_disabled" traps the task
created with RTEMS_NO_FLOATING_POINT. I looked at the generated code
and as expected, found that gcc had opted to use some of the floating
point registers to store variables. By creating the task with
RTEMS_FLOATING POINT, the problem went away, but I was curious of
there is a better way to deal with this.
So, I have 2 questions:
1) If am going to enable the FPU with gcc 4.2.1 must all tasks be
created with RTEMS_FLOATING_POINT? If so, then the documentation
probably should be altered to reflect this.
2) Is there a way to ensure that gcc will not use the FP registers in
RTEMS_NO_FLOATING_POINT tasks?
thanks
Jerry
More information about the users
mailing list