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