6ce7c8a1ee9701406df2dd211bf8ca93bfb7e58d
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / linux / s390 / s390-64 / sys / ucontext.h
1 /* Copyright (C) 2001 Free Software Foundation, Inc.
2    Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com).
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _SYS_UCONTEXT_H
21 #define _SYS_UCONTEXT_H 1
22 /* Forward definition to avoid parse errors */
23 struct ucontext;
24 typedef struct ucontext ucontext_t;
25 #include <features.h>
26 #include <signal.h>
27
28 /* We need the signal context definitions even if they are not used
29    included in <signal.h>.  */
30 #include <bits/sigcontext.h>
31
32 /* Type for a program status word.  */
33 typedef struct
34 {
35   unsigned long mask;
36   unsigned long addr;
37 } __psw_t __attribute__ ((aligned(8)));
38
39 /* Type for a general-purpose register.  */
40 typedef unsigned long greg_t;
41
42 #define NGREG 16
43
44 typedef greg_t gregset_t[NGREG];
45
46 typedef union
47 {
48   double  d;
49   float   f;
50 } fpreg_t;
51
52 /* Register set for the floating-point registers.  */
53 typedef struct {
54   unsigned int fpc;
55   fpreg_t fprs[16];
56 } fpregset_t;
57
58 /* Context to describe whole processor state.  */
59 typedef struct
60   {
61     __psw_t      psw;
62     gregset_t    gregs;
63     unsigned int aregs[16];
64     fpregset_t   fpregs;
65   } mcontext_t;
66
67 /* Userlevel context.  */
68 struct ucontext
69   {
70     unsigned long int uc_flags;
71     struct ucontext *uc_link;
72     stack_t uc_stack;
73     mcontext_t uc_mcontext;
74     __sigset_t uc_sigmask;
75   };
76
77
78 #endif /* sys/ucontext.h */