diff mbox

ARM: vfp: Remote obsolete fpmx_state field from vfp_hard_struct

Message ID 1301489184-4112-2-git-send-email-dave.martin@linaro.org
State Rejected
Headers show

Commit Message

Dave Martin March 30, 2011, 12:46 p.m. UTC
The fpmx_state field was presumably used in the past, when
FSTMX/FLDMX were used to save and resture the VFP state.

This was been deprecated since ARMv6, the context switch code
has been ported to use the double-precision load/store variants
many years ago, and now it appears that nothing in the kernel
references this field any more.

Signed-off-by: Dave Martin <dave.martin@linaro.org>
---
 arch/arm/include/asm/fpstate.h |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

Comments

Russell King - ARM Linux March 30, 2011, 5:52 p.m. UTC | #1
On Wed, Mar 30, 2011 at 01:46:24PM +0100, Dave Martin wrote:
> The fpmx_state field was presumably used in the past, when
> FSTMX/FLDMX were used to save and resture the VFP state.
> 
> This was been deprecated since ARMv6, the context switch code
> has been ported to use the double-precision load/store variants
> many years ago, and now it appears that nothing in the kernel
> references this field any more.

Wrong.

        .macro  VFPFSTMIA, base, tmp
#if __LINUX_ARM_ARCH__ < 6
        STC     p11, cr0, [\base],#33*4             @ FSTMIAX \base!, {d0-d15}
#else
        STC     p11, cr0, [\base],#32*4             @ FSTMIAD \base!, {d0-d15}
#endif

So, building for pre-ARMv6, it's still used.
Dave Martin March 31, 2011, 9:17 a.m. UTC | #2
On Wed, Mar 30, 2011 at 6:52 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> On Wed, Mar 30, 2011 at 01:46:24PM +0100, Dave Martin wrote:
>> The fpmx_state field was presumably used in the past, when
>> FSTMX/FLDMX were used to save and resture the VFP state.
>>
>> This was been deprecated since ARMv6, the context switch code
>> has been ported to use the double-precision load/store variants
>> many years ago, and now it appears that nothing in the kernel
>> references this field any more.
>
> Wrong.
>
>        .macro  VFPFSTMIA, base, tmp
> #if __LINUX_ARM_ARCH__ < 6
>        STC     p11, cr0, [\base],#33*4             @ FSTMIAX \base!, {d0-d15}
> #else
>        STC     p11, cr0, [\base],#32*4             @ FSTMIAD \base!, {d0-d15}
> #endif
>
> So, building for pre-ARMv6, it's still used.
>

Fair point -- looks like my grepping missed those.  Oops.

While I'm looking at this file though...  vfpmacros.h starts with:

@ Macros to allow building with old toolkits (with no VFP support)

I don't think we support building the kernel with such old binutils
any more.  Maybe this file could be simplified?  arch/arm/vfp/ seems
to be built with -mfpu=softvfp+vfp, which appears to enable most of
the affected mnemonics.

vfpmacros.h also contains some oddities such as:

#ifdef CONFIG_VFPv3
#if __LINUX_ARM_ARCH__ <= 6
    /*...*/

Since we don't support building a single kernel across ARMv5 and
ARMv7, are these blocks effectively dead code?

Cheers
---Dave
diff mbox

Patch

diff --git a/arch/arm/include/asm/fpstate.h b/arch/arm/include/asm/fpstate.h
index ee5e03e..08bb836 100644
--- a/arch/arm/include/asm/fpstate.h
+++ b/arch/arm/include/asm/fpstate.h
@@ -18,7 +18,6 @@ 
  * VFP storage area has:
  *  - FPEXC, FPSCR, FPINST and FPINST2.
  *  - 16 or 32 double precision data registers
- *  - an implementation-dependant word of state for FLDMX/FSTMX (pre-ARMv6)
  * 
  *  FPEXC will always be non-zero once the VFP has been used in this process.
  */
@@ -29,9 +28,6 @@  struct vfp_hard_struct {
 #else
 	__u64 fpregs[16];
 #endif
-#if __LINUX_ARM_ARCH__ < 6
-	__u32 fpmx_state;
-#endif
 	__u32 fpexc;
 	__u32 fpscr;
 	/*