]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/e1/sys/ucontext.h
update
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / libc / sysdeps / linux / e1 / sys / ucontext.h
1 /* Copyright (C) 1997, 1999, 2001 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, see
16    <http://www.gnu.org/licenses/>.  */
17
18 /* System V/m68k ABI compliant context switching support.  */
19
20 #ifndef _SYS_UCONTEXT_H
21 #define _SYS_UCONTEXT_H 1
22
23 #include <features.h>
24 #include <signal.h>
25
26 /* Type for general register.  */
27 typedef int greg_t;
28
29 /* Number of general registers.  */
30 #define NGREG   18
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   R_D0 = 0,
39 #define R_D0    R_D0
40   R_D1 = 1,
41 #define R_D1    R_D1
42   R_D2 = 2,
43 #define R_D2    R_D2
44   R_D3 = 3,
45 #define R_D3    R_D3
46   R_D4 = 4,
47 #define R_D4    R_D4
48   R_D5 = 5,
49 #define R_D5    R_D5
50   R_D6 = 6,
51 #define R_D6    R_D6
52   R_D7 = 7,
53 #define R_D7    R_D7
54   R_A0 = 8,
55 #define R_A0    R_A0
56   R_A1 = 9,
57 #define R_A1    R_A1
58   R_A2 = 10,
59 #define R_A2    R_A2
60   R_A3 = 11,
61 #define R_A3    R_A3
62   R_A4 = 12,
63 #define R_A4    R_A4
64   R_A5 = 13,
65 #define R_A5    R_A5
66   R_A6 = 14,
67 #define R_A6    R_A6
68   R_A7 = 15,
69 #define R_A7    R_A7
70   R_SP = 15,
71 #define R_SP    R_SP
72   R_PC = 16,
73 #define R_PC    R_PC
74   R_PS = 17
75 #define R_PS    R_PS
76 };
77
78 /* Structure to describe FPU registers.  */
79 typedef struct fpregset
80 {
81   int f_fpregs[8][3];
82   int f_pcr;
83   int f_psr;
84   int f_fpiaddr;
85 } fpregset_t;
86
87 /* Context to describe whole processor state.  */
88 typedef struct
89 {
90   int version;
91   gregset_t gregs;
92   fpregset_t fpregs;
93 } mcontext_t;
94
95 #define MCONTEXT_VERSION 2
96
97 /* Userlevel context.  */
98 typedef struct ucontext
99 {
100   unsigned long int uc_flags;
101   struct ucontext *uc_link;
102   __sigset_t uc_sigmask;
103   stack_t uc_stack;
104   mcontext_t uc_mcontext;
105   long int uc_filler[174];
106 } ucontext_t;
107
108 #endif /* sys/ucontext.h */