2
* linux/include/asm-arm/fpstate.h
4
* Copyright (C) 1995 Russell King
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation.
11
#ifndef __ASM_ARM_FPSTATE_H
12
#define __ASM_ARM_FPSTATE_H
18
* VFP storage area has:
19
* - FPEXC, FPSCR, FPINST and FPINST2.
20
* - 16 or 32 double precision data registers
21
* - an implementation-dependant word of state for FLDMX/FSTMX (pre-ARMv6)
23
* FPEXC will always be non-zero once the VFP has been used in this process.
26
struct vfp_hard_struct {
32
#if __LINUX_ARM_ARCH__ < 6
38
* VFP implementation specific state
49
struct vfp_hard_struct hard;
52
extern void vfp_flush_thread(union vfp_state *);
53
extern void vfp_release_thread(union vfp_state *);
55
#define FP_HARD_SIZE 35
57
struct fp_hard_struct {
58
unsigned int save[FP_HARD_SIZE]; /* as yet undefined */
61
#define FP_SOFT_SIZE 35
63
struct fp_soft_struct {
64
unsigned int save[FP_SOFT_SIZE]; /* undefined information */
67
#define IWMMXT_SIZE 0x98
69
struct iwmmxt_struct {
70
unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
74
struct fp_hard_struct hard;
75
struct fp_soft_struct soft;
77
struct iwmmxt_struct iwmmxt;
81
#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
84
unsigned int mvdx[16][2];
85
unsigned int mvax[4][3];
86
unsigned int dspsc[2];
89
#define CRUNCH_SIZE sizeof(struct crunch_state)