Revert the change of the gregset_t type.
[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 /* And the whole bunch of them.  We should have used `struct s390_regs',
43    but to avoid name space pollution and since the tradition says that
44    the register set is an array, we make gregset_t a simple array
45    that has the same size as s390_regs.  This is needed for the
46    elf_prstatus structure.  */
47 #define NGREG 27
48 /* Must match kernels psw_t alignment.  */
49 typedef greg_t gregset_t[NGREG] __attribute__ ((aligned(8)));
50
51 typedef union
52   {
53     double  d;
54     float   f;
55   } fpreg_t;
56
57 /* Register set for the floating-point registers.  */
58 typedef struct
59   {
60     unsigned int fpc;
61     fpreg_t fprs[16];
62   } fpregset_t;
63
64 /* Context to describe whole processor state.  */
65 typedef struct
66   {
67     __psw_t psw;
68     unsigned long gregs[16];
69     unsigned int aregs[16];
70     fpregset_t fpregs;
71   } mcontext_t;
72
73 /* Userlevel context.  */
74 struct ucontext
75   {
76     unsigned long int uc_flags;
77     struct ucontext *uc_link;
78     stack_t uc_stack;
79     mcontext_t uc_mcontext;
80     __sigset_t uc_sigmask;
81   };
82
83
84 #endif /* sys/ucontext.h */