RFC: Unsolicited usage of VFP registers for Cortex-M4F

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

 



Hi colleagues

In a course of implementing lazy context switching I the following link
come to me:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0298a/DAFIFGGE.html

Here is a quote in case the link renders broken (in future):
-- Quote ------------


        GNUC C compiler (gcc)

If a program is compiled with the FPU option, gcc might make use of the
floating-point registers if register pressure is high, and running low
on available registers for data processing. In some cases, the memory
copy might also utilize floating-point registers to hold data.

It is possible to avoid the use of floating-point instructions in
non-floating-point code by using |-mfloat-abi=soft|.

By default, libraries are built with |-mfloat-abi=soft|. So they must
not contain floating-point instructions. However, because there are
various gcc vendors with different build options, you might have to
check with your gcc tool chain supplier to find out the status of the
libraries.

-- end of quote ---------

I did some research, googling and searching GCC mailing lists, and found
no other reference that would confirm/deny or put some light on above text.

Therefore here are my questions:

1) Does GCC use VFP registers for holding data other than floating point
values (unsolicited VFP usage)?

If (1) is true:
1.1) What conditions, in addition to selecting -mfloat-abi=hard (or
softfp) shall cause such behaviour. I would appreciate some test case.
1.2) Any pointer to source code responsible for this [optimization]? I
would appreciate this.
1.4) Can it be disabled? I found no such command line option for ARM
targets.

2) Above quote states that -mfloat-abi=soft should be used for libs, but
ld refuses to link them with code produced with -mfloat-abi=hard even if
the libs do not use floating point operations. Is there a waay to tweak
this?

I am especially intersted for Cortex-M4F architecture, but also I would
like to know about ARMv7 in general.

Regards
Ilija



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux