(root)/
glibc-2.38/
sysdeps/
unix/
sysv/
linux/
sparc/
bits/
sigcontext.h
       1  /* Copyright (C) 2000-2023 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 */