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