OSDN Git Service

Replace FSF snail mail address with URLs
[uclinux-h8/uClibc.git] / libc / sysdeps / linux / sparc / bits / sigcontext.h
1 /* Copyright (C) 2000 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    <http://www.gnu.org/licenses/>.  */
17
18 #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
19 # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
20 #endif
21
22 #include <bits/wordsize.h>
23
24 #if __WORDSIZE == 32
25
26 /* It is quite hard to choose what to put here, because
27    Linux/sparc32 had at least 3 totally incompatible
28    signal stack layouts.
29    This one is for the "new" style signals, which are
30    now delivered unless SA_SIGINFO is requested.  */
31
32 struct sigcontext
33   {
34     struct
35       {
36         unsigned int    psr;
37         unsigned int    pc;
38         unsigned int    npc;
39         unsigned int    y;
40         unsigned int    u_regs[16]; /* globals and ins */
41       }                 si_regs;
42     int                 si_mask;
43   };
44
45 #else /* sparc64 */
46
47 typedef struct
48   {
49     unsigned int        si_float_regs [64];
50     unsigned long       si_fsr;
51     unsigned long       si_gsr;
52     unsigned long       si_fprs;
53   } __siginfo_fpu_t;
54
55 struct sigcontext
56   {
57     char                sigc_info[128];
58     struct
59       {
60         unsigned long   u_regs[16]; /* globals and ins */
61         unsigned long   tstate;
62         unsigned long   tpc;
63         unsigned long   tnpc;
64         unsigned int    y;
65         unsigned int    fprs;
66       }                 sigc_regs;
67     __siginfo_fpu_t *   sigc_fpu_save;
68     struct
69       {
70         void *          ss_sp;
71         int             ss_flags;
72         unsigned long   ss_size;
73       }                 sigc_stack;
74     unsigned long       sigc_mask;
75 };
76
77 #endif /* sparc64 */