1 /* Copyright (C) 2000-2021 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 */ 83