The MaverickCrunch support for ep93xx never made it into glibc and was removed from gcc in its 4.8 release in 2012. It is now one of the last parts of arch/arm/ that fails to build with the clang integrated assembler, which is unlikely to ever want to support it. The two alternatives are to force the use of binutils/gas when building the crunch support, or to remove it entirely. According to Hartley Sweeten: "Martin Guy did a lot of work trying to get the maverick crunch working but I was never able to successfully use it for anything. It "kind" of works but depending on the EP93xx silicon revision there are still a number of hardware bugs that either give imprecise or garbage results. I have no problem with removing the kernel support for the maverick crunch." Unless someone else comes up with a good reason to keep it around, remove it now. This touches mostly the ep93xx platform, but removes a bit of code from ARM common ptrace and signal frame handling as well. If there are remaining users of MaverickCrunch, they can use LTS kernels for at least another five years before kernel support ends. Link: https://lore.kernel.org/linux-arm-kernel/20210802141245.1146772-1-arnd@kernel.org/ Link: https://lore.kernel.org/linux-arm-kernel/20210226164345.3889993-1-arnd@kernel.org/ Link: https://github.com/ClangBuiltLinux/linux/issues/1272 Link: https://gcc.gnu.org/legacy-ml/gcc/2008-03/msg01063.html Cc: "Martin Guy" <martinwguy@martinwguy@gmail.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
82 lines
1.4 KiB
C
82 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* arch/arm/include/asm/fpstate.h
|
|
*
|
|
* Copyright (C) 1995 Russell King
|
|
*/
|
|
|
|
#ifndef __ASM_ARM_FPSTATE_H
|
|
#define __ASM_ARM_FPSTATE_H
|
|
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
/*
|
|
* VFP storage area has:
|
|
* - FPEXC, FPSCR, FPINST and FPINST2.
|
|
* - 16 or 32 double precision data registers
|
|
* - an implementation-dependent word of state for FLDMX/FSTMX (pre-ARMv6)
|
|
*
|
|
* FPEXC will always be non-zero once the VFP has been used in this process.
|
|
*/
|
|
|
|
struct vfp_hard_struct {
|
|
#ifdef CONFIG_VFPv3
|
|
__u64 fpregs[32];
|
|
#else
|
|
__u64 fpregs[16];
|
|
#endif
|
|
#if __LINUX_ARM_ARCH__ < 6
|
|
__u32 fpmx_state;
|
|
#endif
|
|
__u32 fpexc;
|
|
__u32 fpscr;
|
|
/*
|
|
* VFP implementation specific state
|
|
*/
|
|
__u32 fpinst;
|
|
__u32 fpinst2;
|
|
|
|
#ifdef CONFIG_SMP
|
|
__u32 cpu;
|
|
#endif
|
|
};
|
|
|
|
union vfp_state {
|
|
struct vfp_hard_struct hard;
|
|
};
|
|
|
|
extern void vfp_flush_thread(union vfp_state *);
|
|
extern void vfp_release_thread(union vfp_state *);
|
|
|
|
#define FP_HARD_SIZE 35
|
|
|
|
struct fp_hard_struct {
|
|
unsigned int save[FP_HARD_SIZE]; /* as yet undefined */
|
|
};
|
|
|
|
#define FP_SOFT_SIZE 35
|
|
|
|
struct fp_soft_struct {
|
|
unsigned int save[FP_SOFT_SIZE]; /* undefined information */
|
|
};
|
|
|
|
#define IWMMXT_SIZE 0x98
|
|
|
|
struct iwmmxt_struct {
|
|
unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
|
|
};
|
|
|
|
union fp_state {
|
|
struct fp_hard_struct hard;
|
|
struct fp_soft_struct soft;
|
|
#ifdef CONFIG_IWMMXT
|
|
struct iwmmxt_struct iwmmxt;
|
|
#endif
|
|
};
|
|
|
|
#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
|
|
|
|
#endif
|
|
|
|
#endif
|