(root)/
glibc-2.38/
sysdeps/
unix/
sysv/
linux/
csky/
sys/
ucontext.h
       1  /* struct ucontext definition, C-SKY version.
       2     Copyright (C) 2018-2023 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 */