1 /* struct ucontext definition, C-SKY version. 2 Copyright (C) 2018-2021 Free Software Foundation, Inc. 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, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _SYS_UCONTEXT_H 20 #define _SYS_UCONTEXT_H 1 21 22 #include <features.h> 23 24 #include <bits/types/sigset_t.h> 25 #include <bits/types/stack_t.h> 26 27 typedef struct 28 { 29 unsigned long __tls; 30 unsigned long __lr; 31 unsigned long __pc; 32 unsigned long __sr; 33 unsigned long __usp; 34 35 /* 36 * a0, a1, a2, a3: 37 * abiv1: r2, r3, r4, r5 38 * abiv2: r0, r1, r2, r3 39 */ 40 41 unsigned long __orig_a0; 42 unsigned long __a0; 43 unsigned long __a1; 44 unsigned long __a2; 45 unsigned long __a3; 46 47 /* 48 * ABIV2: r4 ~ r13 49 */ 50 unsigned long __regs[10]; 51 52 /* r16 ~ r30 */ 53 unsigned long __exregs[15]; 54 55 unsigned long __rhi; 56 unsigned long __rlo; 57 unsigned long __glibc_reserved; 58 } gregset_t; 59 60 typedef struct 61 { 62 unsigned long __vr[64]; 63 unsigned long __fcr; 64 unsigned long __fesr; 65 unsigned long __fid; 66 unsigned long __glibc_reserved; 67 } fpregset_t; 68 69 /* Context to describe whole processor state. */ 70 typedef struct 71 { 72 gregset_t __gregs; 73 fpregset_t __fpregs; 74 } mcontext_t; 75 76 /* Userlevel context. */ 77 typedef struct ucontext_t 78 { 79 unsigned long int __uc_flags; 80 struct ucontext_t *uc_link; 81 stack_t uc_stack; 82 mcontext_t uc_mcontext; 83 sigset_t uc_sigmask; 84 } ucontext_t; 85 86 #undef __ctx 87 88 89 #endif /* sys/ucontext.h */ 90