Update copyright notices with scripts/update-copyrights
[glibc.git] / sysdeps / i386 / sys / ucontext.h
blobc7ab13af17880d26b3596d1d00d61ad748a9623c
1 /* Copyright (C) 1997-2014 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
18 /* System V/i386 ABI compliant context switching support. */
20 #ifndef _SYS_UCONTEXT_H
21 #define _SYS_UCONTEXT_H 1
23 #include <features.h>
24 #include <signal.h>
26 /* Type for general register. */
27 typedef int greg_t;
29 /* Number of general registers. */
30 #define NGREG 19
32 /* Container for all general registers. */
33 typedef greg_t gregset_t[NGREG];
35 /* Number of each register is the `gregset_t' array. */
36 enum
38 REG_GS = 0,
39 #define REG_GS REG_GS
40 REG_FS,
41 #define REG_FS REG_FS
42 REG_ES,
43 #define REG_ES REG_ES
44 REG_DS,
45 #define REG_DS REG_DS
46 REG_EDI,
47 #define REG_EDI REG_EDI
48 REG_ESI,
49 #define REG_ESI REG_ESI
50 REG_EBP,
51 #define REG_EBP REG_EBP
52 REG_ESP,
53 #define REG_ESP REG_ESP
54 REG_EBX,
55 #define REG_EBX REG_EBX
56 REG_EDX,
57 #define REG_EDX REG_EDX
58 REG_ECX,
59 #define REG_ECX REG_ECX
60 REG_EAX,
61 #define REG_EAX REG_EAX
62 REG_TRAPNO,
63 #define REG_TRAPNO REG_TRAPNO
64 REG_ERR,
65 #define REG_ERR REG_ERR
66 REG_EIP,
67 #define REG_EIP REG_EIP
68 REG_CS,
69 #define REG_CS REG_CS
70 REG_EFL,
71 #define REG_EFL REG_EFL
72 REG_UESP,
73 #define REG_UESP REG_UESP
74 REG_SS
75 #define REG_SS REG_SS
78 /* Structure to describe FPU registers. */
79 typedef struct fpregset
81 union
83 struct fpchip_state
85 int state[27];
86 int status;
87 } fpchip_state;
89 struct fp_emul_space
91 char fp_emul[246];
92 char fp_epad[2];
93 } fp_emul_space;
95 int f_fpregs[62];
96 } fp_reg_set;
98 long int f_wregs[33];
99 } fpregset_t;
101 /* Context to describe whole processor state. */
102 typedef struct
104 gregset_t gregs;
105 fpregset_t fpregs;
106 } mcontext_t;
108 /* Userlevel context. */
109 typedef struct ucontext
111 unsigned long int uc_flags;
112 struct ucontext *uc_link;
113 __sigset_t uc_sigmask;
114 stack_t uc_stack;
115 mcontext_t uc_mcontext;
116 long int uc_filler[5];
117 } ucontext_t;
119 #endif /* sys/ucontext.h */