zig

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

blob df187d59 (2117B) - Raw


      1 /* Copyright (C) 2000-2020 Free Software Foundation, Inc.
      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
      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.
      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
     12    Lesser General Public License for more details.
     13 
     14    You should have received a copy of the GNU Lesser General Public
     15    License along with the GNU C Library; if not, see
     16    <https://www.gnu.org/licenses/>.  */
     17 
     18 #ifndef _BITS_SIGCONTEXT_H
     19 #define _BITS_SIGCONTEXT_H 1
     20 
     21 #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
     22 # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
     23 #endif
     24 
     25 #include <bits/wordsize.h>
     26 
     27 #if __WORDSIZE == 32
     28 
     29 /* It is quite hard to choose what to put here, because
     30    Linux/sparc32 had at least 3 totally incompatible
     31    signal stack layouts.
     32    This one is for the "new" style signals, which are
     33    now delivered unless SA_SIGINFO is requested.  */
     34 
     35 struct sigcontext
     36   {
     37     struct
     38       {
     39 	unsigned int	psr;
     40 	unsigned int	pc;
     41 	unsigned int	npc;
     42 	unsigned int	y;
     43 	unsigned int	u_regs[16]; /* globals and ins */
     44       }			si_regs;
     45     int			si_mask;
     46   };
     47 
     48 #else /* sparc64 */
     49 
     50 typedef struct
     51   {
     52     unsigned int	si_float_regs [64];
     53     unsigned long	si_fsr;
     54     unsigned long	si_gsr;
     55     unsigned long	si_fprs;
     56   } __siginfo_fpu_t;
     57 
     58 struct sigcontext
     59   {
     60     char		sigc_info[128];
     61     struct
     62       {
     63 	unsigned long	u_regs[16]; /* globals and ins */
     64 	unsigned long	tstate;
     65 	unsigned long	tpc;
     66 	unsigned long	tnpc;
     67 	unsigned int	y;
     68 	unsigned int	fprs;
     69       }			sigc_regs;
     70     __siginfo_fpu_t *	sigc_fpu_save;
     71     struct
     72       {
     73 	void *		ss_sp;
     74 	int		ss_flags;
     75 	unsigned long	ss_size;
     76       }			sigc_stack;
     77     unsigned long	sigc_mask;
     78 };
     79 
     80 #endif /* sparc64 */
     81 
     82 #endif /* bits/sigcontext.h */