Re:

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



David Daney wrote:
On 06/11/2010 07:32 AM, Manuel Lauss wrote:
Hi,

On Fri, Jun 11, 2010 at 4:06 PM, Jabir M<Jabir_M@xxxxxxxxxxxxxx>  wrote:
    I am working on a FPU-less 34k MIPS platform with linux-2.6.24
kernel. After running a Darwin media streaming server on the board
for a while, my oprofile results shows high utilization on
fpu_emulator_cop1Handler()&  r4k_wait().


r4k_wait() is the idle task, so that indicates there is nothing to do at those sample points.
Which suggests that the system is either waiting on I/O data, or crunching it using a lot of floating point computation. Normally, a high level of idle would indicate that the system is easily keeping up with the data stream, but if you're running the 34K as one of the available flavors of virtual SMP, you may be seeing a lot of wait loop samples because there's only one runnable thread in the job mix.


wiki page http://www.linux-mips.org/wiki/Floating_point says gcc will
use hard float as default and soft float is best suited model for a
fpu less processor.  Could anyone kindly help me in understanding use
of -msoft-float .
Whether I need to compile

1. kernel with -msoft-float ? or

The kernel doesn't use floating point.  So it doesn't matter.
It makes no sense to build the kernel -msoft-float, but it should be noted that there are a couple potential places (e.g. ptrace /proc) where the difference in user-mode floating point argument passing ABIs is kernel-visible.


2. Glibc ? or
3. Application ? or
4. All the above ?


If you don't want to use the kernel's FP emulator, you need 2 and 3.


I have fought with this in the past; what you need to do is:
- build gcc with softfloat support (mipsel-softfloat-linux-gnu triplet
for example),
- build a libc with this new compiler,
- then rebuild all libraries and apps with you new softfloat toolchain.
Let me be a bit more clear on this. Because of the ABI difference, you need to either rebuild your application as a static binary, with the main program and *all* constituent libraries likewise rebuilt with softfloat, or, if you absolutely need it to be dynamically linked, you need to rebuild the shared libraries and *all* programs that might use them, which means essentailly a full userland rebuild.

An optimized, assembly-language soft-float library implementation is *much* faster than the kernel emulator, but I benchmarked it once upon a time against a portable gnu soft-float library in C, and the difference wasn't nearly as dramatic.

         Regards,

         Kevin K.



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux