File: /usr/src/linux/include/asm-ia64/sigcontext.h

1     #ifndef _ASM_IA64_SIGCONTEXT_H
2     #define _ASM_IA64_SIGCONTEXT_H
3     
4     /*
5      * Copyright (C) 1998, 1999 Hewlett-Packard Co
6      * Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com>
7      */
8     
9     #include <asm/fpu.h>
10     
11     #define IA64_SC_FLAG_ONSTACK_BIT		1	/* is handler running on signal stack? */
12     #define IA64_SC_FLAG_IN_SYSCALL_BIT		1	/* did signal interrupt a syscall? */
13     #define IA64_SC_FLAG_FPH_VALID_BIT		2	/* is state in f[32]-f[127] valid? */
14     
15     #define IA64_SC_FLAG_ONSTACK		(1 << IA64_SC_FLAG_ONSTACK_BIT)
16     #define IA64_SC_FLAG_IN_SYSCALL		(1 << IA64_SC_FLAG_IN_SYSCALL_BIT)
17     #define IA64_SC_FLAG_FPH_VALID		(1 << IA64_SC_FLAG_FPH_VALID_BIT)
18     
19     # ifndef __ASSEMBLY__
20     
21     struct sigcontext {
22     	unsigned long		sc_flags;	/* see manifest constants above */
23     	unsigned long		sc_nat;		/* bit i == 1 iff scratch reg gr[i] is a NaT */
24     	stack_t			sc_stack;	/* previously active stack */
25     
26     	unsigned long		sc_ip;		/* instruction pointer */
27     	unsigned long		sc_cfm;		/* current frame marker */
28     	unsigned long		sc_um;		/* user mask bits */
29     	unsigned long		sc_ar_rsc;	/* register stack configuration register */
30     	unsigned long		sc_ar_bsp;	/* backing store pointer */
31     	unsigned long		sc_ar_rnat;	/* RSE NaT collection register */
32     	unsigned long		sc_ar_ccv;	/* compare and exchange compare value register */
33     	unsigned long		sc_ar_unat;	/* ar.unat of interrupted context */
34     	unsigned long		sc_ar_fpsr;	/* floating-point status register */
35     	unsigned long		sc_ar_pfs;	/* previous function state */
36     	unsigned long		sc_ar_lc;	/* loop count register */
37     	unsigned long		sc_pr;		/* predicate registers */
38     	unsigned long		sc_br[8];	/* branch registers */
39     	/* Note: sc_gr[0] is used as the "uc_link" member of ucontext_t */
40     	unsigned long		sc_gr[32];	/* general registers (static partition) */
41     	struct ia64_fpreg	sc_fr[128];	/* floating-point registers */
42     
43     	unsigned long		sc_rsvd[16];	/* reserved for future use */
44     
45     	/*
46     	 * The mask must come last so we can increase _NSIG_WORDS
47     	 * without breaking binary compatibility.
48     	 */
49     	sigset_t		sc_mask;	/* signal mask to restore after handler returns */
50     };
51     
52     # endif /* __ASSEMBLY__ */
53     #endif /* _ASM_IA64_SIGCONTEXT_H */
54