]>
Commit | Line | Data |
---|---|---|
df019d94 | 1 | /* Copyright (C) 1998, 1999 Free Software Foundation, Inc. |
028502bf UD |
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 Library General Public License as | |
6 | published by the Free Software Foundation; either version 2 of the | |
7 | 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 | Library General Public License for more details. | |
13 | ||
14 | You should have received a copy of the GNU Library General Public | |
15 | License along with the GNU C Library; see the file COPYING.LIB. If not, | |
16 | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
17 | Boston, MA 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; | |
df019d94 | 88 | struct ucontext *uc_link; |
028502bf UD |
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 */ |