1 /* struct ucontext definition, ARC version. 2 Copyright (C) 2020-2022 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 /* System V/ARC ABI compliant context switching support. */ 20 21 #ifndef _SYS_UCONTEXT_H 22 #define _SYS_UCONTEXT_H 1 23 24 #include <features.h> 25 26 #include <bits/types/sigset_t.h> 27 #include <bits/types/stack_t.h> 28 29 typedef struct 30 { 31 unsigned long int __pad; 32 unsigned long int __bta; 33 unsigned long int __lp_start, __lp_end, __lp_count; 34 unsigned long int __status32, __ret, __blink; 35 unsigned long int __fp, __gp; 36 unsigned long int __r12, __r11, __r10, __r9, __r8, __r7; 37 unsigned long int __r6, __r5, __r4, __r3, __r2, __r1, __r0; 38 unsigned long int __sp; 39 unsigned long int __r26; 40 unsigned long int __r25, __r24, __r23, __r22, __r21, __r20; 41 unsigned long int __r19, __r18, __r17, __r16, __r15, __r14, __r13; 42 unsigned long int __efa; 43 unsigned long int __stop_pc; 44 unsigned long int __r30, __r58, __r59; 45 } mcontext_t; 46 47 /* Userlevel context. */ 48 typedef struct ucontext_t 49 { 50 unsigned long int __uc_flags; 51 struct ucontext_t *uc_link; 52 stack_t uc_stack; 53 mcontext_t uc_mcontext; 54 sigset_t uc_sigmask; 55 } ucontext_t; 56 57 #endif 58