]>
Commit | Line | Data |
---|---|---|
04277e02 | 1 | /* Copyright (C) 1998-2019 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 | |
3214b89b AJ |
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. | |
028502bf UD |
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 | |
3214b89b | 12 | Lesser General Public License for more details. |
028502bf | 13 | |
3214b89b | 14 | You should have received a copy of the GNU Lesser General Public |
ab84e3ff PE |
15 | License along with the GNU C Library. If not, see |
16 | <http://www.gnu.org/licenses/>. */ | |
028502bf UD |
17 | |
18 | /* System V/ARM ABI compliant context switching support. */ | |
19 | ||
20 | #ifndef _SYS_UCONTEXT_H | |
21 | #define _SYS_UCONTEXT_H 1 | |
22 | ||
23 | #include <features.h> | |
028502bf | 24 | |
cfed8ece | 25 | #include <bits/types/sigset_t.h> |
0bcec532 | 26 | #include <bits/types/stack_t.h> |
c66b29f9 ZW |
27 | |
28 | ||
028502bf UD |
29 | typedef int greg_t; |
30 | ||
31 | /* Number of general registers. */ | |
139904b7 JM |
32 | #define __NGREG 16 |
33 | #ifdef __USE_MISC | |
34 | # define NGREG __NGREG | |
35 | #endif | |
028502bf UD |
36 | |
37 | /* Container for all general registers. */ | |
139904b7 | 38 | typedef greg_t gregset_t[__NGREG]; |
028502bf | 39 | |
5df4854e | 40 | #ifdef __USE_MISC |
028502bf UD |
41 | /* Number of each register is the `gregset_t' array. */ |
42 | enum | |
43 | { | |
44 | R0 = 0, | |
5df4854e | 45 | # define R0 R0 |
028502bf | 46 | R1 = 1, |
5df4854e | 47 | # define R1 R1 |
028502bf | 48 | R2 = 2, |
5df4854e | 49 | # define R2 R2 |
028502bf | 50 | R3 = 3, |
5df4854e | 51 | # define R3 R3 |
028502bf | 52 | R4 = 4, |
5df4854e | 53 | # define R4 R4 |
028502bf | 54 | R5 = 5, |
5df4854e | 55 | # define R5 R5 |
028502bf | 56 | R6 = 6, |
5df4854e | 57 | # define R6 R6 |
028502bf | 58 | R7 = 7, |
5df4854e | 59 | # define R7 R7 |
028502bf | 60 | R8 = 8, |
5df4854e | 61 | # define R8 R8 |
028502bf | 62 | R9 = 9, |
5df4854e | 63 | # define R9 R9 |
028502bf | 64 | R10 = 10, |
5df4854e | 65 | # define R10 R10 |
028502bf | 66 | R11 = 11, |
5df4854e | 67 | # define R11 R11 |
028502bf | 68 | R12 = 12, |
5df4854e | 69 | # define R12 R12 |
028502bf | 70 | R13 = 13, |
5df4854e | 71 | # define R13 R13 |
028502bf | 72 | R14 = 14, |
5df4854e | 73 | # define R14 R14 |
028502bf | 74 | R15 = 15, |
5df4854e | 75 | # define R15 R15 |
028502bf | 76 | }; |
5df4854e | 77 | #endif |
028502bf | 78 | |
139904b7 JM |
79 | #ifdef __USE_MISC |
80 | # define __ctx(fld) fld | |
81 | #else | |
82 | # define __ctx(fld) __ ## fld | |
83 | #endif | |
84 | ||
028502bf | 85 | /* Structure to describe FPU registers. */ |
81b032c8 | 86 | typedef struct |
028502bf UD |
87 | { |
88 | } fpregset_t; | |
89 | ||
90 | /* Context to describe whole processor state. */ | |
91 | typedef struct | |
92 | { | |
139904b7 JM |
93 | gregset_t __ctx(gregs); |
94 | fpregset_t __ctx(fpregs); | |
028502bf UD |
95 | } mcontext_t; |
96 | ||
97 | /* Userlevel context. */ | |
25128773 | 98 | typedef struct ucontext_t |
028502bf | 99 | { |
3d452dab | 100 | unsigned long int __ctx(uc_flags); |
25128773 | 101 | struct ucontext_t *uc_link; |
cfed8ece | 102 | sigset_t uc_sigmask; |
028502bf UD |
103 | stack_t uc_stack; |
104 | mcontext_t uc_mcontext; | |
3d452dab | 105 | long int __glibc_reserved1[5]; |
028502bf UD |
106 | } ucontext_t; |
107 | ||
3d452dab JM |
108 | #undef __ctx |
109 | ||
028502bf | 110 | #endif /* sys/ucontext.h */ |