cpuuse, rtmonuse and gcc (was: erc32 wrong compilation flags for initial task with fpu?)

Aleix Conchillo Flaqué aconchillo at ieec.cat
Fri Mar 28 12:17:07 UTC 2008


Hi again,

I forced the SPARC_HAS_FPU to 1, so CPU_HARDWARE_FP is set to TRUE.
Now (compiling RTEMS with -msoft-float), the CPU_usage_Dump and
Period_usage_Dump print 0.000 for percentage values.

I have disassembled the code and I have seen that the compiler forces
those functions (by chance, only these two) to use __floatsidf and
__divdf3 functions, which I think are for software floating point
emulation. This is fine, the problem is that they use floating point
registers internally.

So, even RTEMS is compiled with -msoft-float, gcc floating point
software emulation function use floating point registers, which is
kind of scary.

Luckily, my task had the RTEMS_FLOATING_POINT attribute set, so I
could see the statistics. Removing the attribute, which I think it
should, crashed the application because of the gcc problem cited
above.

The problems I am facing now are:

- gcc uses floating point registers for some floating point software
emulation routines.
- cpu_usage_dump and period_usage_dump do not print correct percentage
values. I am not sure if this is caused by the point above.

Does this makes any sense at all?


Aleix



More information about the users mailing list