]>
Commit | Line | Data |
---|---|---|
1 | /* Machine-dependent signal context structure for GNU Hurd. MIPS version. | |
2 | Copyright (C) 1994,97,2001 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, write to the Free | |
17 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |
18 | 02111-1307 USA. */ | |
19 | ||
20 | #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H | |
21 | # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead." | |
22 | #endif | |
23 | ||
24 | #ifndef sc_mips_thread_state | |
25 | ||
26 | /* Signal handlers are actually called: | |
27 | void handler (int sig, int code, struct sigcontext *scp); */ | |
28 | ||
29 | /* State of this thread when the signal was taken. */ | |
30 | struct sigcontext | |
31 | { | |
32 | /* These first members are machine-independent. */ | |
33 | ||
34 | int sc_onstack; /* Nonzero if running on sigstack. */ | |
35 | __sigset_t sc_mask; /* Blocked signals to restore. */ | |
36 | ||
37 | /* MiG reply port this thread is using. */ | |
38 | unsigned int sc_reply_port; | |
39 | ||
40 | /* Port this thread is doing an interruptible RPC on. */ | |
41 | unsigned int sc_intr_port; | |
42 | ||
43 | /* Error code associated with this signal (interpreted as `error_t'). */ | |
44 | int sc_error; | |
45 | ||
46 | /* All following members are machine-dependent. The rest of this | |
47 | structure is written to be laid out identically to: | |
48 | { | |
49 | struct mips_thread_state ts; | |
50 | struct mips_exc_state es; | |
51 | struct mips_float_state fs; | |
52 | } | |
53 | trampoline.c knows this, so it must be changed if this changes. */ | |
54 | #define sc_mips_thread_state sc_gpr /* Beginning of correspondence. */ | |
55 | int sc_gpr[31]; /* "General" registers; [0] is r1. */ | |
56 | int sc_mdlo, sc_mdhi; /* Low and high multiplication results. */ | |
57 | int sc_pc; /* Instruction pointer. */ | |
58 | ||
59 | /* struct mips_exc_state */ | |
60 | #define sc_mips_exc_state sc_cause | |
61 | unsigned int sc_cause; /* Machine-level trap code. */ | |
62 | #define SC_CAUSE_SST 0x00000044 | |
63 | unsigned int sc_badvaddr; | |
64 | unsigned int sc_coproc_used; /* Which coprocessors the thread has used. */ | |
65 | #define SC_COPROC_USE_COP0 1 /* (by definition) */ | |
66 | #define SC_COPROC_USE_COP1 2 /* FPA */ | |
67 | #define SC_COPROC_USE_FPU SC_COPROC_USE_COP1 | |
68 | #define SC_COPROC_USE_COP2 4 | |
69 | #define SC_COPROC_USE_COP3 8 | |
70 | ||
71 | /* struct mips_float_state | |
72 | This is only filled in if the SC_COPROC_USE_FPU bit | |
73 | is set in sc_coproc_used. */ | |
74 | #define sc_mips_float_state sc_fpr | |
75 | int sc_fpr[32]; /* FP registers. */ | |
76 | int sc_fpcsr; /* FPU status register. */ | |
77 | int sc_fpeir; /* FP exception instruction register. */ | |
78 | }; | |
79 | ||
80 | #endif /* sc_mips_thread_state */ |