[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
cpuuse, rtmonuse and gcc (was: erc32 wrong compilation flags for initial task with fpu?)
- Date: Fri, 28 Mar 2008 13:17:07 +0100
- From: aconchillo at ieec.cat (Aleix Conchillo Flaqué)
- Subject: cpuuse, rtmonuse and gcc (was: erc32 wrong compilation flags for initial task with fpu?)
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