Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm64
include
asm
fpsimd.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012 ARM Ltd.
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU General Public License for more details.
12
*
13
* You should have received a copy of the GNU General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15
*/
16
#ifndef __ASM_FP_H
17
#define __ASM_FP_H
18
19
#include <asm/ptrace.h>
20
21
#ifndef __ASSEMBLY__
22
23
/*
24
* FP/SIMD storage area has:
25
* - FPSR and FPCR
26
* - 32 128-bit data registers
27
*
28
* Note that user_fpsimd forms a prefix of this structure, which is
29
* relied upon in the ptrace FP/SIMD accessors.
30
*/
31
struct
fpsimd_state
{
32
union
{
33
struct
user_fpsimd_state
user_fpsimd
;
34
struct
{
35
__uint128_t
vregs
[32];
36
u32
fpsr
;
37
u32
fpcr
;
38
};
39
};
40
};
41
42
#if defined(__KERNEL__) && defined(CONFIG_COMPAT)
43
/* Masks for extracting the FPSR and FPCR from the FPSCR */
44
#define VFP_FPSCR_STAT_MASK 0xf800009f
45
#define VFP_FPSCR_CTRL_MASK 0x07f79f00
46
/*
47
* The VFP state has 32x64-bit registers and a single 32-bit
48
* control/status register.
49
*/
50
#define VFP_STATE_SIZE ((32 * 8) + 4)
51
#endif
52
53
struct
task_struct
;
54
55
extern
void
fpsimd_save_state
(
struct
fpsimd_state
*
state
);
56
extern
void
fpsimd_load_state
(
struct
fpsimd_state
*
state
);
57
58
extern
void
fpsimd_thread_switch
(
struct
task_struct
*
next
);
59
extern
void
fpsimd_flush_thread
(
void
);
60
61
#endif
62
63
#endif
Generated on Thu Jan 10 2013 13:03:35 for Linux Kernel by
1.8.2