patch-2.3.18 linux/include/asm-sparc64/sigcontext.h
Next file: linux/include/asm-sparc64/signal.h
Previous file: linux/include/asm-sparc64/reg.h
Back to the patch index
Back to the overall index
- Lines: 126
- Date:
Wed Sep 8 11:14:32 1999
- Orig file:
v2.3.17/linux/include/asm-sparc64/sigcontext.h
- Orig date:
Tue Oct 27 09:52:21 1998
diff -u --recursive --new-file v2.3.17/linux/include/asm-sparc64/sigcontext.h linux/include/asm-sparc64/sigcontext.h
@@ -1,20 +1,18 @@
-/* $Id: sigcontext.h,v 1.11 1998/10/06 09:28:37 jj Exp $ */
+/* $Id: sigcontext.h,v 1.12 1999/09/06 08:22:09 jj Exp $ */
#ifndef __SPARC64_SIGCONTEXT_H
#define __SPARC64_SIGCONTEXT_H
+#ifdef __KERNEL__
#include <asm/ptrace.h>
-
-#define SUNOS_MAXWIN 31
+#endif
#ifndef __ASSEMBLY__
-/* SunOS system call sigstack() uses this arg. */
-struct sunos_sigstack {
- unsigned int sig_sp;
- int onstack_flag;
-};
+#ifdef __KERNEL__
+
+#define __SUNOS_MAXWIN 31
-/* This is what SunOS does, so shall I. */
+/* This is what SunOS does, so shall I unless we use new 32bit signals or rt signals. */
struct sigcontext32 {
int sigc_onstack; /* state to restore */
int sigc_mask; /* sigmask to restore */
@@ -31,44 +29,30 @@
int sigc_oswins; /* outstanding windows */
/* stack ptrs for each regwin buf */
- unsigned sigc_spbuf[SUNOS_MAXWIN];
+ unsigned sigc_spbuf[__SUNOS_MAXWIN];
/* Windows to restore after signal */
- struct reg_window32 sigc_wbuf[SUNOS_MAXWIN];
+ struct reg_window32 sigc_wbuf[__SUNOS_MAXWIN];
};
-/* This is what SunOS doesn't, so we have to write this alone. */
-struct sigcontext {
- int sigc_onstack; /* state to restore */
- int sigc_mask; /* sigmask to restore */
- unsigned long sigc_sp; /* stack pointer */
- unsigned long sigc_pc; /* program counter */
- unsigned long sigc_npc; /* next program counter */
- unsigned long sigc_psr; /* for condition codes etc */
- unsigned long sigc_g1; /* User uses these two registers */
- unsigned long sigc_o0; /* within the trampoline code. */
-
- /* Now comes information regarding the users window set
- * at the time of the signal.
- */
- int sigc_oswins; /* outstanding windows */
+#endif
- /* stack ptrs for each regwin buf */
- char *sigc_spbuf[SUNOS_MAXWIN];
+#ifdef __KERNEL__
- /* Windows to restore after signal */
- struct reg_window sigc_wbuf[SUNOS_MAXWIN];
-};
+/* This is what we use for 32bit new non-rt signals. */
typedef struct {
- struct pt_regs32 si_regs;
+ struct {
+ unsigned int psr;
+ unsigned int pc;
+ unsigned int npc;
+ unsigned int y;
+ unsigned int u_regs[16]; /* globals and ins */
+ } si_regs;
int si_mask;
} __siginfo32_t;
-typedef struct {
- struct pt_regs si_regs;
- long si_mask;
-} __siginfo_t;
+#endif
typedef struct {
unsigned int si_float_regs [64];
@@ -77,6 +61,30 @@
unsigned long si_fprs;
} __siginfo_fpu_t;
+/* This is what SunOS doesn't, so we have to write this alone
+ and do it properly. */
+struct sigcontext {
+ /* The size of this array has to match SI_MAX_SIZE from siginfo.h */
+ char sigc_info[128];
+ struct {
+ unsigned long u_regs[16]; /* globals and ins */
+ unsigned long tstate;
+ unsigned long tpc;
+ unsigned long tnpc;
+ unsigned int y;
+ unsigned int fprs;
+ } sigc_regs;
+ __siginfo_fpu_t * sigc_fpu_save;
+ struct {
+ void * ss_sp;
+ int ss_flags;
+ unsigned long ss_size;
+ } sigc_stack;
+ unsigned long sigc_mask;
+};
+
+#ifdef __KERNEL__
+
/* This magic should be in g_upper[0] for all upper parts
to be valid. */
#define SIGINFO_EXTRA_V8PLUS_MAGIC 0x130e269
@@ -84,6 +92,8 @@
unsigned int g_upper[8];
unsigned int o_upper[8];
} siginfo_extra_v8plus_t;
+
+#endif
#endif /* !(__ASSEMBLY__) */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)