zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

ucontext.h (2132B) - Raw


      1 /* struct ucontext definition, C-SKY version.
      2    Copyright (C) 2018-2025 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 */