Test for stack alignment.
[jlayton/glibc.git] / sysdeps / arm / sys / ucontext.h
1 /* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
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.
8
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.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, write to the Free
16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17    02111-1307 USA.  */
18
19 /* System V/ARM ABI compliant context switching support.  */
20
21 #ifndef _SYS_UCONTEXT_H
22 #define _SYS_UCONTEXT_H 1
23
24 #include <features.h>
25 #include <signal.h>
26
27 typedef int greg_t;
28
29 /* Number of general registers.  */
30 #define NGREG   16
31
32 /* Container for all general registers.  */
33 typedef greg_t gregset_t[NGREG];
34
35 /* Number of each register is the `gregset_t' array.  */
36 enum
37 {
38   R0 = 0,
39 #define R0      R0
40   R1 = 1,
41 #define R1      R1
42   R2 = 2,
43 #define R2      R2
44   R3 = 3,
45 #define R3      R3
46   R4 = 4,
47 #define R4      R4
48   R5 = 5,
49 #define R5      R5
50   R6 = 6,
51 #define R6      R6
52   R7 = 7,
53 #define R7      R7
54   R8 = 8,
55 #define R8      R8
56   R9 = 9,
57 #define R9      R9
58   R10 = 10,
59 #define R10     R10
60   R11 = 11,
61 #define R11     R11
62   R12 = 12,
63 #define R12     R12
64   R13 = 13,
65 #define R13     R13
66   R14 = 14,
67 #define R14     R14
68   R15 = 15,
69 #define R15     R15
70 };
71
72 /* Structure to describe FPU registers.  */
73 typedef struct fpregset
74   {
75   } fpregset_t;
76
77 /* Context to describe whole processor state.  */
78 typedef struct
79   {
80     gregset_t gregs;
81     fpregset_t fpregs;
82   } mcontext_t;
83
84 /* Userlevel context.  */
85 typedef struct ucontext
86   {
87     unsigned long int uc_flags;
88     struct ucontext *uc_link;
89     __sigset_t uc_sigmask;
90     stack_t uc_stack;
91     mcontext_t uc_mcontext;
92     long int uc_filler[5];
93   } ucontext_t;
94
95 #endif /* sys/ucontext.h */