77 lines · 1.5 KB · C
RawDownload
/* *  linux/include/asm-arm/fpstate.h * *  Copyright (C) 1995 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __ASM_ARM_FPSTATE_H#define __ASM_ARM_FPSTATE_H  #ifndef __ASSEMBLY__ /* * VFP storage area has: *  - FPEXC, FPSCR, FPINST and FPINST2. *  - 16 double precision data registers *  - an implementation-dependant word of state for FLDMX/FSTMX *  *  FPEXC will always be non-zero once the VFP has been used in this process. */ struct vfp_hard_struct {	__u64 fpregs[16];#if __LINUX_ARM_ARCH__ < 6	__u32 fpmx_state;#endif	__u32 fpexc;	__u32 fpscr;	/*	 * VFP implementation specific state	 */	__u32 fpinst;	__u32 fpinst2;}; 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